将.txt文件重命名为文件中的第一行?

时间:2013-09-10 22:02:02

标签: python file-rename

我有很多名称以“read”开头的.txt文件,我想重命名。我希望它们以文件中的第一行命名。我是一个非常糟糕的程序员,但我已经试了一下,现在我被卡住了。

import os
for filename in os.listdir("."):
   if filename.startswith("read"):
      for line in filename:
        os.rename(filename, line)

目前脚本什么都不做,即使它有效,我也很确定这些文件不会保留其扩展名。

非常感谢任何帮助,谢谢。

2 个答案:

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