使用python将文件列表保存到文本文件中

时间:2014-07-26 17:27:01

标签: python list file split save

我想获取没有扩展名/后缀的文件名,并使用特定字符进行拆分。

目录中有很多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']

这可以用更少的代码完成吗?

谢谢和亲切的问候, 添

2 个答案:

答案 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替换扩展名。