我正在使用以下代码重命名几百个文件,当文件大小小于1GB时,它的工作效果很好,但是遇到较大的文件时,它不会提取任何内容,并且文件名为空白。
import os, linecache
for filename in os.listdir(path):
if not filename.startswith("out"): continue # less deep
file_path = os.path.join(path, filename) # folderpath + filename
fourteenline = linecache.getline(file_path, 14) # maybe 13 for 0-based index?
new_file_name = fourteenline[40:40+50].rstrip() # staring at 40 with length of 50
os.rename(file_path, os.path.join(path, new_file_name))
答案 0 :(得分:2)
请勿使用linecache
。它会读取内存中的整个文件,并且在内存不足时会自动失败。
每个文件open
并在一个简单的循环中或在itertools.islice
的帮助下读取14行。
答案 1 :(得分:1)
这是工作代码:
file_path = os.path.join(path, filename)
fb=open(file_path)
secondline=next(islice(fb,1,2))
fb.close()
print(secondline)
new_file_name = secondline[28:28 + 70].rstrip()
Filenamenew = new_file_name
os.rename(file_path, os.path.join(path, Filenamenew))