0

特定のディレクトリ内のファイル名のリストを取得するための次のコードがあります

import sys,os

data_files = [x[2] for x in os.walk(os.path.dirname(sys.argv[0]))]
print data_files

出力は次のようなものです

[['bar.py',  'foo.py', 'foo.pyc', 'fooBar', 'fooBar.py', 'tar.py', 'tar.pyc']]

このリストを解析して、特定のファイル名のみを別の関数に渡したい

例:上記のリストを解析して(リストですか?)、tar.pyのみを別の関数(つまり、名前tar)に渡して、別の関数が次のように使用できるようにします。

import filename ( in this case tar)

私はPythonを初めて使用し、リストの解析をたくさん試しましたが、名前を抽出できませんでした。助けていただければ幸いです

私はPython2.7を使用しています

お時間をいただきありがとうございます

編集:

リストを解析する方法を理解しました

data_files = [x[2] for x in os.walk(os.path.dirname(sys.argv[0]))]
hello = data_files[0]
print hello[0].split(".")[0]

問題は、ファイル名を次のような変数に割り当てようとしたときです。

var = hello[0].split(".")[0]

と使用import var

しかし、Pythonはvarを変数としてではなくモジュール名と見なすため、このようなモジュールのインポートを許可するかどうかはわかりません。どうすればこれを克服できますか

4

2 に答える 2

2

リストの解析とはどういう意味か、少し混乱しています。これはリストであり、すべてのファイル拡張子を削除したい場合は、リスト内包表記を使用してそれを実行し、fastreloadが提案するように分割することができます。

new_list = [x.split('.')[0] for x in data_files]

各ファイルを見てリストをステップスルーする必要がある場合は、次の方法でそれを行うことができます。

for file in data_files:
    your code goes here
于 2012-11-27T20:43:58.010 に答える
0

要素がどのインデックスにあるかがわかっている場合は、次file_list[index_of_your_element].split('.')[0]のように実行できます。

file_list = ['bar.py',  'foo.py', 'foo.pyc', 'fooBar', 'fooBar.py', 'tar.py', 'tar.pyc']
print l[5].split('.')[0] == 'tar'

印刷しますtrue。あなたの質問はちょっと紛らわしいです、あなたは要素について何を知っていますか、そしてあなたはそれをどのように使いたいですか?

于 2012-11-27T20:51:08.727 に答える