zl程序教程

您现在的位置是:首页 >  其它

当前栏目

读取文件夹根目录写入txt并生成随机样本

生成 读取 文件夹 写入 txt 根目录
2023-09-14 09:14:39 时间

通过python写一些脚本实现数据处理功能确实很方便,先记录当下,后续补充完善

1.读取文件夹所有数据并进行随机采样

注:主要调用os库的文件操作功能,想要掌握程度就自己实现一个小功能就很快了解其基本原理了,代码书写时需要注意上下对齐与空格,不然会报错,再就是对于中文路径读出和写入时的编码小心,其他就是字符串的操作了,具体实现如下:

# -*- coding:UTF-8 -*-
import os
import random
dirname = "...folder"
txt_path='F:/code/Pycham/list.txt'
txt_file = open(txt_path,'w')
imglist=[]

def traverse_path(file_path):
    files = os.listdir(file_path)
    for fi in files:
        fi_d = os.path.join(file_path, fi)
        if os.path.isdir(fi_d):

            traverse_path(fi_d)
        else:
            img_name=os.path.join(file_path, fi_d)
            #print(img_name)
            if img_name[-4:]=='tiff':
                #print(img_name)
                txt_file.write(img_name)
                txt_file.write('\n')
    # for i in len(lists):
    #     print(lists(i))
#print("读取图像数量:",len(imglist))
traverse_path(dirname)

#随机抽取样本数目
sample_file='F:\code\Pycham\sample.txt'
n=1000
f=open(txt_path,encoding='gbk')
lines=f.readlines()
list=[]
for line in lines:
    print(line)
    list.append(line)
print("样本总个数:",len(list),"   抽样个数:",n)
g=open(sample_file,'w')
a=random.sample(list,n)#随机抽取n行
for i in a:
    g.write(i)

f.close()
g.close()

2.关于pycharm读入cv2报错的解决

关于opencv-python安装:
C++快速梯子https://www.raoyunsoft.com/wordpress/index.php/2020/03/09/opencvdownload/
python快速梯子https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/opencv-python/
将下载后.whl文件放到以下目录:
在这里插入图片描述
打开cmd窗口 ,键入:
在这里插入图片描述

安装完opencv_python,之后在python 3.x.x—Lib—site-packages里应该有很多opencv开头,然后dll结尾的文件。这个时候我们只需要一步操作就行了。

那就是将这些文档全部放在一个cv2的文件夹下面。 最后将这个cv2文件夹放在Lib目录下面。一定要注意是lib目录。如果放在site-packages还是会报错的。

总之概况为一句话,把安装到site-packages目录下cv2目录移动到Lib目录下就行!
在这里插入图片描述
 这样Tracker的代码跑起来了,很开心,但是发现pycharm关于cv2没有代码提示,这不能忍啊!,最后在Lib\cv2这个目录,找到__init__.py,修改如下:

import sys
import os
import importlib
os.environ["PATH"] += os.pathsep + os.path.dirname(os.path.realpath(__file__))
from .cv2 import *
from .data import *

# wildcard import above does not import "private" variables like __version__
# this makes them available
globals().update(importlib.import_module('cv2.cv2').__dict__)

3.遍历文件及子文件目录获取图像路径

# -*- coding:UTF-8 -*-
import os
import random
dirname = "...folder"
txt_path='F:/code/Pycham/list.txt'
txt_file = open(txt_path,'w')
imglist=[]

def traverse_path(file_path):
    files = os.listdir(file_path)
    for fi in files:
        fi_d = os.path.join(file_path, fi)
        if os.path.isdir(fi_d):

            traverse_path(fi_d)
        else:
            img_name=os.path.join(file_path, fi_d)
            #print(img_name)
            if img_name[-4:]=='tiff':
                #print(img_name)
                imglist.append(img_name)
                txt_file.write(img_name)
                txt_file.write('\n')
    # for i in len(lists):
    #     print(lists(i))

traverse_path(dirname)
print("读取图像数量:",len(imglist))