【问题标题】:Add a new line after each new file name in python在python中的每个新文件名后添加一个新行
【发布时间】:2022-07-01 21:25:33
【问题描述】:

我有一个简短的 Python 脚本,它可以打开一个目录并将所有文件名放入一个 .txt 文件中。我尝试了几种方法在每个文件名后添加一个新行,但不能这样做。我也想把整个字符串转成大写。

这是我所拥有的:

import os

#Path where the photos are stored
path1 = r"V:\DATABASES\0 Suspension\Suspensia Pictures"

#Variable to list all the files in the dorectory
file_dir = os.listdir(path1)

#Opens a new text file called Pics
newfile = open('Pics.txt','w')

#Writes lines in the file as a string
newfile.write(str(file_dir))

#Prints out all the file names
#print(file_dir)ode here

我对新行的想法是在newfile.write(str(file_dir)) 行之后添加print('\n')。然而,这并没有奏效。

至于大写我不知道把.upper()放在哪里。

感谢您的帮助

【问题讨论】:

  • print 打印到控制台。另一方面,newfile.write('\n') 会将该换行符发送到您希望它去的文件中。
  • 或扩展 JNevill 所说的内容,只需将现有行更改为 newfile.write(str(file_dir)+"\n")
  • 对于大写要求,.upper()是字符串对象的方法。所以newfile.write(str(file_dir).upper()) 应该可以解决问题。把它们放在一起:newfile.write(str(file_dir).upper() + "\n")
  • 我试过了,但我仍然得到一个巨大的列表 (['Thumbs.db', 'X01BJ0004', 'X01BJ0026', 'X01BJ0026.JPG', ....]),我不确定为什么它是一个列表
  • 啊。是的。好的。 file_dir 是列表对象而不是字符串。忽略了那部分。在这种情况下,您想要“加入”您的列表而不是 str(file_dir),这会将您的列表转换为字符分隔的字符串。在这种情况下,分隔符将是换行符:newfile.write(file_dir.join("\n"))

标签: python


【解决方案1】:

os.listdir() 给你一个字符串列表,所以转换它的输出会给你一个看起来像字符串列表的字符串。

改为这样做:

#Writes lines in the file as a string
newfile.write('\n'.join(file_name.upper() for file_name in file_dir))

【讨论】:

    【解决方案2】:

    os.listdir 会返回一个list,所以,当你调用newfile.write(str(file_dir)) 时,它会打印出 Python 对list 的表示。

    听起来你想要类似的东西

    FILE1.TXT
    FILE2.TXT
    ...
    

    您应该将list_dir 的元素写入文件,而不是file_dir 本身。有两种方法可以做到这一点。首先,您可以使用for 循环:

    for filename in file_dir:
       newfile.write(filename.upper() + '\n')
    

    虽然您可能不在乎,但这样做的一个缺点是文件末尾会留下一个空白行。这是因为最后写入的文件名末尾会有一个'\n'

    在我看来,更好的解决方案是

    newfile.write('\n'.join(name.upper() for name in file_dir))
    

    这将获取您所有的文件名并将它们与'\n's 连接在一起。这样,你就不会在最后得到一个空行。

    附带说明,您应该养成使用with 块(通常称为“上下文块”)来管理文件句柄的习惯:

    with open(open('Pics.txt','w') as newfile:
        newfile.write('\n'.join(name.upper() for name in file_dir))
    

    这样,newfile 将保证在您离开区块时关闭。

    【讨论】:

      猜你喜欢
      • 2021-07-05
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 2021-11-23
      • 2015-01-25
      • 1970-01-01
      相关资源
      最近更新 更多