-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

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

そのように段階的に名前を付けるだけなら、なぜそれらをリストに保存しないのですか?

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

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

ここで使用した理由は、さまざまなフォルダーextendからファイル名のリストを作成したいように思われるからです。

于 2012-08-07T03:19:59.500 に答える
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 に答える