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

通过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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明月醉窗台

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值