我有很多名称以“read”开头的.txt文件,我想重命名。我希望它们以文件中的第一行命名。我是一个非常糟糕的程序员,但我已经试了一下,现在我被卡住了。
import os
for filename in os.listdir("."):
if filename.startswith("read"):
for line in filename:
os.rename(filename, line)
目前脚本什么都不做,即使它有效,我也很确定这些文件不会保留其扩展名。
非常感谢任何帮助,谢谢。
答案 0 :(得分:0)
您需要打开文件才能从中获取第一行。 for line in filename
是一个for循环,它遍历文件名,而不是文件的内容,因为你没有打开实际的文件。
for循环也是为了迭代所有文件,你只需要第一行。
最后,文本文件中的一行包含行尾字符('\n'
),因此您需要.strip()
。
import os
for filename in os.listdir("."):
if filename.startswith("read"):
with open(filename) as openfile:
firstline = openfile.readline()
os.rename(filename, firstline.strip())
希望有所帮助
答案 1 :(得分:0)
如果用以下内容替换内循环怎么办?
if not filename.startswith("read"): continue
base, ext = os.path.splitext(filename)
with open(filename, 'r') as infile:
newname = infile.next().rstrip()
newname += ext
os.rename(filename, newname)