2016-07-22 8 views
-1

これはなぜファイルを開いて読み込み、エラーなしで閉じますか? 'filename'というエラーは存在しません。 csvモジュールを使用するたびにファイルパスを入力する必要性をなくす方法はありますか?ファイルパスを必要とせずにcsvファイル用のディレクトリを介してスクリプトループを作成する方法はありませんか?CSVモジュールには常にFilePathが必要ですか?オートメーション?

data = open(filename, "r") 
d = data.readlines() 
data.close() 

しかしこれはありません。

import csv 

os.makedirs('filesplit', exist_ok=True) 

for csvfilename in os.listdir('.'): 
    if csvfilename.endswith('.csv'): 
    continue 

csv_contents = [] 
csvfileobj = open (filename, 'r') 
+2

...何ですか?ファイルにアクセスする必要がある場合、そのパスを知る必要があります。それがcsvファイルであるかどうかにかかわらず。達成しようとしていることを含めるために質問を編集できますか?多分私たちは助けることができます。 –

+1

Pythonで字下げが重要なことは知っていますか?あなたは何を意味するのか理解していますか?なぜあなたはそれを使用していないときにcsvモジュールについて文句をしますか?そしてbtw、あなたが得るエラーは、そのすべてとは関係がありません。 – polku

答えて

0

Pythonのファイルオブジェクトの性質上、常にパスを指定する必要があります。しかし、パスは単なる文字列なので、(osモジュールを使用して)現在のディレクトリにあるすべてのファイルを検索するスクリプトを作成し、.csvという拡張子でフィルタリングしてリストに入れることができます。ここに例があります:

from os import listdir 
import csv 

# Get the list of all files/directories in current path 
all_files = listdir('.') 

# Filter out only the .csv files 
csv_files = [file for file in all_files if file.endswith('.csv')] 

print csv_files 

# Create file objects and csv objects for each CSV 
file_objects = [open(file) for file in csv_files] 
csv_readers = [csv.reader(csvfile) for csvfile in file_objects] 

# Do what you need to do with the data 

# Close file objects 
for file in file_objects: 
    file.close() 
関連する問題