使用python将文件列表保存到文本文件中
Posted
技术标签:
【中文标题】使用python将文件列表保存到文本文件中【英文标题】:Save file list into text file using python 【发布时间】:2014-07-26 17:27:01 【问题描述】:我想获取不带扩展名/后缀的文件名,并使用特定字符进行拆分。
目录中有很多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']
['堆栈', '溢出', '问题', '0.3.jpg']
这可以用更少的代码来完成吗?
感谢和亲切的问候, 蒂姆
【问题讨论】:
这不是很多代码...... 您想要列表列表还是单个列表? 我需要单独的列表 :) 【参考方案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
作为 maxsplit
只会拆分一次。我们只需将扩展名替换为str.replace
。
【讨论】:
我可以问你一些事情来将结果保存到文本文件中吗?当我保存它时,它的形式是“列表”,所以它包含 [ ' , ] 像这 4 个字符。我怎样才能删除这些? 以后要对txt文件的内容做什么? 我使用了一个用 LISP 语言开发的外部应用程序。我想根据文件名用python制作一个脚本并将其发送到外部应用程序。 @user3880099,答案的最后一部分应该做你想做的。【参考方案2】:if file.endswith('.jpg'):
file = file.rsplit('_',1)
print file[0],
print file[1].rsplit('.',1)[0]
print(file, file=data)
【讨论】:
以上是关于使用python将文件列表保存到文本文件中的主要内容,如果未能解决你的问题,请参考以下文章