我想获取没有扩展名/后缀的文件名,并使用特定字符进行拆分。
目录中有很多jpg文件。
例如,
的a_list(B)_001.jpg
Stack_overflow_question_0.3.jpg
...以及某些目录中的数百个文件
我想要的只是获取没有扩展名的文件NAMES,例如:
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','溢出','问题',' 0.3.jpg']
这可以用更少的代码完成吗?
谢谢和亲切的问候, 添
答案 0 :(得分:0)
if file.endswith('.jpg'):
file = file.rsplit('_',1)
print file[0],
print file[1].rsplit('.',1)[0]
print(file, file=data)
答案 1 :(得分:0)
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
替换扩展名。