重命名文件不适用于大于1 GB的文件

时间:2018-09-24 09:44:13

标签: python python-3.x

我正在使用以下代码重命名几百个文件,当文件大小小于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))

2 个答案:

答案 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))