[python] 文件复制/路径检测

曾经终败给现在 2022-05-13 05:18 251阅读 0赞

import shutil

shutil.copytree(sourceResDir, dstResDir)
复制目录,olddir和newdir都只能是目录,且newdir必须不存在

文件的拷贝用shutil.copyfile(srcFilePath,dstFilePath)
oldfile和newfile都只能是文件

shutil.copy( src, dst) 复制一个文件,到一个文件或一个目录

import os

if not os.path.exist(path) 检测文件夹是否存在
os.mkdir() 如果不存在,创建文件夹 ,mkdir只能创建最后一层的文件夹
os.path.exists(no_exist_file.txt)判断文件,文件夹是否存在

  1. import os
  2. #os.walk(path)遍历文件夹,没有返回值,直接循环调用
  3. for root, dirs, files in os.walk(".", topdown=False):
  4. for name in files:
  5. print(os.path.join(root, name)) #文件名
  6. for name in dirs: # 子文件夹名
  7. print(os.path.join(root, name))

csv

读取

  1. with open(os.path.join('/hdd/NTU_RGBD', 'split_ntu_cs_frames.csv'), 'r') as fin:
  2. reader = csv.reader(fin)
  3. data = list(reader)
  4. root_path = '/hdd/NTU_RGBD/cs_frames'
  5. count = 0
  6. for item in data:
  7. print item
  8. origin_path = os.path.join(root_path,item[0],item[1],item[3]+'_rgb-'+item[4].zfill(4)+'.jpg')
  9. new_path = os.path.join('/hdd/NTU_RGBD/cs_one_frames',item[0],item[2],item[3]+'__rgb--00'+item[4]+'.jpg')
  10. shutil.copy(origin_path,new_path)
  11. count += 1
  12. print count

写入

  1. with open('split_ntu_cs_frames.csv', 'w') as fout:
  2. writer = csv.writer(fout)
  3. writer.writerows(frames)

write_row write_rows dict

  1. for train_sample in train:
  2. splits[i]['train'].extend(train_sample)
  3. for test_sample in test:
  4. splits[i]['test'].extend(test_sample)
  5. with open('setting_2.csv','w') as csvfile:
  6. header = ['test','train']
  7. writer = csv.DictWriter(csvfile,fieldnames =header)
  8. writer.writeheader()
  9. # for cross_val in splits:
  10. writer.writerows(splits) list中的每个元素都是字典
  11. import csv
  12. with open('names.csv', 'w') as csvfile:
  13. fieldnames = ['first_name', 'last_name']
  14. writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
  15. writer.writeheader()
  16. writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
  17. writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
  18. writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})
  19. ...
  20. first_name,last_name
  21. Baked,Beans
  22. Lovely,Spam
  23. Wonderful,Spam
  24. >>> import csv
  25. >>> with open('names.csv') as csvfile:
  26. ... reader = csv.DictReader(csvfile)
  27. ... for row in reader:
  28. ... print(row['first_name'], row['last_name'])
  29. ...
  30. Baked Beans
  31. Lovely Spam
  32. Wonderful Spam

读取的时候 , reader是一个对象,不是一个列表,该怎么办?
如果用for循环取出的话,每一个row是一个字典。
字典中原来存储的array 变成了字符串,2-d array 变成了换行符+list+字符串

  1. with open(csv_name,'r') as csv_file:
  2. pred_true= csv.DictReader(csv_file)
  3. for row in pred_true:
  4. y_pred_str = row['y_pred']
  5. y_pred_str = y_pred_str.strip('[]').split(' ')
  6. for i in y_pred_str: # 有些是空字符,有些还有换行符
  7. if i != '':
  8. y_pred_list.append(eval(i))

glob

  1. import glob
  2. glob.glob()
  3. glob给出的不是本机的绝对录路径,而是所给path的最深路径

发表评论

表情:
评论列表 (有 0 条评论,251人围观)

还没有评论,来说两句吧...

相关阅读