【问题标题】:Rename .txt files to first line in file?将 .txt 文件重命名为文件中的第一行?
【发布时间】:2013-09-14 18:52:56
【问题描述】:

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

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

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

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: python file-rename


    【解决方案1】:

    您需要打开文件以从中获取第一行。 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())
    

    希望对你有帮助

    【讨论】:

    • 谢谢它有点工作。文件扩展名丢失的问题仍然存在。现在的一个新问题是文件名中的非法字符(主要是 " 和 :) 有什么简单的方法可以去除它们吗?
    【解决方案2】:

    如果您将内部循环替换为以下内容会怎样:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      相关资源
      最近更新 更多