目的
現在Python(version:Python 3.7.1)でコードを作成しているプログラム初心者です。
色々と試みたのですが解決の目処が立たないため、この度質問させていただきました。
指定したフォルダにおけるファイル一覧を取得し、その後にそれぞれのファイルについて拡張子別に分け、それぞれ空のリストに要素を追加する(ファイルを拡張子毎に仕分けする)ことを目的としています。
for文の中で書き方の問題がある可能性が主に考えられるのですが、それ以外の可能性もあります。
ここで質問するような内容ではないかもしれませんが、ご検討宜しくお願い致します。
該当のソースコード
import os ChDir=os.chdir(r'フォルダ名') path = r'フォルダ名' files = [] data1 = [] data2 = [] for ChDir in os.listdir(path): if os.path.isfile(path + ChDir): files.append(ChDir) for o in files: if(o[-4:] == '.txt'): #ファイル名の後ろ4文字を取り出してそれが.txtなら data1.append(o) elif(o[-6:] == '.fasta'): #ファイル名の後ろ6文字を取り出してそれが.fastaなら data2.append(o) else: continue print(len(data1)) #205 #正しくは18 #print(o)で同名ファイルが規則的に複数回出力されていたことを確認 print(len(data2)) #5 #正しくは2 #print(o)で同名ファイルが規則的に複数回出力されていたことを確認 print(len(files)) #21 #確かに個数は合っているが、、、 #print(files)で出力したところ[1],[1,2],[1,2,3]のように雪だるま式に増えていることが分かった
発生している問題
指定したフォルダにはtxtファイルが18、fastaファイルが2、その他のファイル(.py)が1の計21が存在しています。しかし、txtファイルおよびfastaファイルの数が合わないほか、ファイル一覧取得の段階で失敗している状況です。(「該当のソースコード」で詳細についてコメント記載しています)
※該当のソースコードで実行したとき、エラーは発生しておりません。
###参考URL
【Python入門】listdir関数でデータを取得する方法
https://qiita.com/Morio/items/f34dab8825c9d76664f5
(2019/04/18(火)に閲覧できることを確認)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/18 05:33