指定されたディレクトリ内の各ファイル内のデータ値を開き、読み込み、アクセスすることを目的とした関数を書いた。空のリストはサマリーCSVファイルの作成に使用されます。forループを通して空のリストに追加するが、私のリストは空のまま出力する
問題は、私のリストがforループの終了時に空であることです。 この問題を回避するにはどうすればよいですか?
私は既存の質問を調べてみましたが、役に立たなかったと思います。
ここに私のコードです:
fileid = [] * len(os.listdir(path))
objname = [] * len(os.listdir(path))
obsvtype = [] * len(os.listdir(path))
filtr = [] * len(os.listdir(path))
# Open, read, and iterate over files ending with the .fits extension in inputted path.
# Assign fits header key data to a variable and then append iteratively to respective empty list.
for fitsfile in os.listdir(path):
if fitsfile[-5:] == '.fits':
try:
hdulist = fits.open(str.format(fitsfile))
filename = hdulist[0].data['FILENAME']
fileid.append(filename)
object_name = hdulist[0].data['OBJECT']
objname.append(object_name)
obsvtyp = hdulist[0].data['OBSTYPE']
obsvtype.append(obsvtyp)
filt = hdulist[0].data['FILTERS']
filtr.append(filt)
except:
pass
print(fileid,objname,obsvtype,filtr)
# Create an empty pandas dataframe object (data table) and assign populated data lists to dataframe.
# columns.
dataframe = pd.DataFrame(data = None)
dataframe['Filename'] = fileid
dataframe['Object_Name'] = objname
dataframe['Observation_type'] = obsvtype
dataframe['Filter'] = filtr
print(dataframe)
# Export compiled dataframe object to a .csv file in specified directory path.
dataframe.to_csv(path + 'reduc_tbl_result.csv',columns = ['Filename','Object_name',
'Observation_Type','Filter'],index = None)
と結果:
([]、[]、[]、[]) 空DATAFRAME 列:[ファイル名、object_nameの、Observation_type、フィルター] インデックス:[])
ありがとうございます。
最小、完全、および検証可能なサンプルを作成できますか? https://stackoverflow.com/help/mcve – christopherlovell
リストの初期設定に「なし」がありません。次に、事前に初期化された配列に追加します。それとは別に、私はこの例からデバッグすることができないファイルの読み込みで何かがうまくいかなければなりません。 – christopherlovell
まず、try:... except:pass'を使ってやめてください。あなたは、何かがうまくいかなくなったときにはいつでもPythonにシャットダウンするように指示しています。そして、何かがうまくいかず、Pythonがあなたに言わなかったときに私たちに来てください。 ** Pythonが何かが間違っていることを教えさせてください** – user2357112