如何在python中获取文件名列表并将每个文件名分配为一个数字供以后使用?

时间:2012-08-07 03:14:07

标签: python windows string list

以下是我目前在Windows中的内容:

    import os
os.chdir("C:/Users/any/Desktop/test")
for files in os.listdir("."):

    print files

现在打印出来:

test picture.jpg
test script.bat
test text.txt

但是现在我被卡住的地方输出是随机的,每个文件夹都已完成,因此我对解决方案的想法就是让它获取列表并将每个文件单独标记为

filename1 
filename2
filename3

现在filename1 = test picture.jpg

修改

我正在尝试做的是稍后在我的代码中将使用每个文件名,例如说我试图重命名我的文件,以便任何包含字母'e'的文件,它将被更改到'a'字符:

import os
os.chdir("C:/Users/any/Desktop/test")
for files in os.listdir("."):

    print files



files = files.replace('e', 'a')
print files

但我需要能够让它单独执行每个文件名,因此代码看起来像这样:

import os
    os.chdir("C:/Users/any/Desktop/test")
    for files in os.listdir("."):

        print filename1



    filename1 = filename1.replace('e', 'a')
    print filename1

3 个答案:

答案 0 :(得分:3)

虽然我并非100%确定我明白你要做什么,但你可以试试这个:

dirlist = os.listdir('.')

然后从{0}开始的每个索引将从您的目录中生成一个条目。索引值实际上取代了文件名的数字。

所以而不是

dirlist

你有

filename1 
filename2
filename3

只需很少的工作量,并且可以轻松地以索引的任何顺序引用单个条目。

作为额外的奖励,如果需要,您可以轻松地使用dirlist[0] dirlist[1] dirlist[2] - 循环遍历此名单列表

for

对于您在原始帖子中提到的单个文件名,这会有点棘手。

<强>更新

鉴于您对帖子的修改,您可以使用原始代码实现目标:

for names in dirlist:
   ...

答案 1 :(得分:0)

如果您将所有这些名称添加到列表中,您将拥有预建的索引和编号系统:

>>> lst = ['a','b','c']
>>> lst.index('b')
1
>>> lst[1]
'b'

在你的情况下:

files = os.listdir('.')
files[0] # first file
files[3] # fourth file (first one is 0)

答案 2 :(得分:0)

如果您只是将它们命名为增量,那么为什么不将它们存储在列表中?

filenames = []
filenames.extend(os.listdir("."))

filenames[0] # filename1 equivalent
filenames[1] # filename2 equivalent

我在这里使用extend的原因是你想要从各种文件夹中构建一个文件名列表。