-1

这是我到目前为止在 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”的任何文件都将更改为“一个人物:

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
4

3 回答 3

3

虽然我不是 100% 确定我理解你想要做什么,但你可以试试这个:

dirlist = os.listdir('.')

那么从零开始的每个索引dirlist都会从您的目录中产生一个条目。索引值实际上会代替文件名的数字。

所以与其拥有

filename1 
filename2
filename3

你会有

dirlist[0]
dirlist[1]
dirlist[2]

以最小的努力,并且可以很容易地使用索引以任何顺序引用单个条目。

作为额外的奖励,如果for需要,您可以使用 -loop轻松遍历此名称列表

for names in dirlist:
   ...

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

更新

鉴于您对帖子的编辑,您几乎可以使用原始代码实现目标:

import os
os.chdir("C:/Users/any/Desktop/test")
for fname in os.listdir("."):
    fname = fname.replace('e', 'a')
    print fname
于 2012-08-07T03:19:34.550 回答
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)
于 2012-08-07T03:19:12.303 回答
0

如果您只是要像那样递增地命名它们,为什么不将它们存储在列表中呢?

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

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

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

于 2012-08-07T03:19:59.500 回答