用Python将文件列表保存到文本文件中
我想要从文件名中去掉后缀,只保留文件名本身,并且用特定的字符来分割。
目录里有很多jpg格式的文件。
比如说,
A_list(B)_001.jpg
Stack_overflow_question_0.3.jpg
... 还有成百上千个文件在某个目录里
我想要的只是文件名,不带后缀,像这样:
A_list(B), 001
Stack_overflow_question, 0.3
但是用下面的代码,
import os
path = 'D:\HeadFirstPython\chapter3'
os.chdir(path)
data = open('temp.txt', 'w')
for file in os.listdir(path):
if file.endswith('.jpg'):
file = file.split('_')
print(file, file=data)
data.close()
我得到的结果是这样的。
['A', 'list(B)', '001.jpg']
['Stack', 'overflow', 'question', '0.3.jpg']
这样可以用更少的代码来实现吗?
谢谢,祝好,
Tim
2 个回答
0
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有人可能会在使用某个功能时遇到错误,或者发现某个操作没有按照预期的方式工作。
在这种情况下,查看其他人的经验和解决方案就显得特别重要。很多时候,其他开发者在遇到类似问题时,已经在网上分享了他们的解决办法。这就是为什么像StackOverflow这样的网站非常有用,因为你可以找到很多关于编程问题的讨论和解答。
如果你在学习编程,遇到问题时不要气馁,试着去搜索一下,看看有没有人遇到过类似的情况,或者有没有解决方案可以参考。记住,编程是一个不断学习和解决问题的过程,大家都是从小白一步步成长起来的。
if file.endswith('.jpg'):
file = file.rsplit('_',1)
print file[0],
print file[1].rsplit('.',1)[0]
print(file, file=data)
1
import glob
import os
path = 'D:\HeadFirstPython\chapter3'
os.chdir(path)
with open("temp.txt","w") as f: # with automatically closes your files
my_l = [x.replace(".jpg","").rsplit("_",1) for x in glob.glob("*.jpg")] # list of lists
with open("temp.txt", "w") as f:
for x in glob.glob("*.jpg"):
print x.replace(".jpg", "").rsplit("_", 1) # each list
输出的结果会是这样的:
s = "Stack_overflow_question_0.3.jpg"
print s.replace(".jpg", "").rsplit("_", 1)
['Stack_overflow_question', '0.3']
如果想把内容写入txt文件而不加","
的话,可以这样做:
with open("temp.txt", "w") as f: # with automatically closes your files
my_l = [x.replace(".jpg", "").rsplit("_", 1) for x in glob.glob("*.jpg")]
for l in my_l:
f.write(str(l).replace(",", ""))
使用"*.jpg"
可以找到所有以jpg
结尾的文件。rsplit("_",1)
这个方法会从右边开始找第一个_
并进行分割,而1
表示只分割一次。我们只需要用str.replace
来替换文件的扩展名。