[英]Add a new line after each new file name in python
我有一个简短的 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()
。
这是当前的输出:
X01BJ0041, X01BJ0050, X01BJ0058,
X01BJ0059, X01BJ0060,X01BJ0061,X01BJ0065
我正在寻找的输出:
X01BJ0006.JPG
X01BJ0007.JPG
X01BJ0008.JPG
X01BJ0026.JPG
X01BJ0036.JPG
X01BJ0037.JPG
X01BJ0038.JPG
X01BJ0039.JPG
X01BJ0040.JPG
X01BJ0041.JPG
X01BJ0050.JPG
X01BJ0058.JPG
X01BJ0059.JPG
感谢所有的帮助!
os.listdir()
给你一个字符串列表,所以转换它的输出会给你一个看起来像字符串列表的字符串。
改为这样做:
#Writes lines in the file as a string
newfile.write('\n'.join(file_name.upper() for file_name in file_dir))
扩展其他答案,我们可以使用file.writelines()
操作而不是join
。 可以说,这使相应的代码行更易于阅读,并允许您使用列表推导,但任何答案都可以正常工作,真的。
所以完整的脚本是:
import os
MY_DIR = r"V:\DATABASES\0 Suspension\Suspensia Pictures"
OUTPUT_FILENAME = "Pics.txt"
filenames = os.listdir(MY_DIR)
with open(OUTPUT_FILENAME, "w") as newfile:
newfile.writelines(name.upper() + "\n" for name in filenames) # As @Daniel Walker noticed, the [] are not necessary for the list comprehension.
备注file.writelines()
用词不当,因为它没有隐式添加行分隔符。 您可以创建自己的writelines()
函数来解决此问题,但我想这对于当前主题来说有点过分了。 有关该主题的更多信息,请参阅此其他 StackOverflow 线程。
os.listdir
正在为您返回一个list
,因此,当您调用newfile.write(str(file_dir))
时,它将打印 Python 对list
的表示。
您应该将file_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'
。 这样,你就不会在最后得到一个空行。
附带说明一下,您应该养成使用with
块(通常称为“上下文块”)来管理文件句柄的习惯:
with open('Pics.txt','w') as newfile:
newfile.write('\n'.join(name.upper() for name in file_dir))
这样,当您离开块时,将保证关闭newfile
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.