私はPython 3.6でテキストパーサーを作成しています。私は以下のようにファイルのレイアウトを持っている:Python - すべてのテキストファイルを再帰的に繰り返す
(私が使用する実際のファイル構造はこれよりもはるかに広範囲である)
-Directory(main folder)
-amerigroup.txt
-bcbs.txt
childfolder
-medicare.txt
私は(を経由して追加する2つの異なるリストにテキストを抽出する必要があります私の成長し続けるリストに)。現在のコードを実行するたびに、自分のプログラムがmedicare.txtファイルを開いて情報を読み込んで抽出するようには見えません。そのようなファイルやディレクトリがないことを示すエラーが表示されます: 'medicare.txt'。
私の目標は、3つのファイルからデータを取得し、一度にそれを抽出することです。 amerigroupとbcbsのデータをどのようにしてchildfolderに入れ、medicare.txtを取得したら、それを私のファイルパスのすべてのブランチに対して繰り返すのですか?
このコードスニペットでテキストファイルを開いて閉じようとしています。これまで私がこれまで持っていたことは次のとおりです。
import re
import os
import pandas as pd
#change active directory
os.chdir(r'\\Centerstone.lan\Files\HomeDrive\angus.gray\My Documents\claimstest')
#rootdir = r'\\Centerstone.lan\Files\HomeDrive\angus.gray\My Documents\claimstest'
#set up Regular Expression objects to parse X12
claimidRegex = re.compile(r'(CLM\*)(\d+)')
dxRegex = re.compile(r'(ABK:)(\w\d+)(\*|~)(ABF:)?(\w\d+)?(\*|~)?(ABF:)?(\w\d+)?(\*|~)?(ABF:)?(\w\d+)?(\*|~)?(ABF:)?(\w\d+)?(\*|~)?(ABF:)?(\w\d+)?(\*|~)?(ABF:)?(\w\d+)?(\*|~)?(ABF:)?(\w\d+)?(\*|~)?')
claimids = []
dxinfo = []
for dirpath, dirnames, files in os.walk(topdir):
for name in files:
cid = []
dx = []
if name.lower().endswith(exten):
data = open(name, 'r')
data.close()
私にこれを手伝ってくれてありがとう!
編集:これまでのところ歩き回ってみました。私の最新の試み(私もtxtfile_full_path使用してみました - 動作しませんでした):興味のある人のため
for dirpath, dirnames, filename in os.walk(base_dir):
for filename in filename:
#defining file type
txtfile=open(filename,"r")
txtfile_full_path = os.path.join(dirpath, filename)
print(filename)
EDIT2。あなたがopen
へのフルパスを渡す必要が
import re
import os
import pandas as pd
#change active directory
os.chdir(r'\\Centerstone.lan\Files\HomeDrive\angus.gray\My Documents\claimstest')
base_dir = (r'\\Centerstone.lan\Files\HomeDrive\angus.gray\My Documents\claimstest')
#set up Regular Expression objects to parse X12
claimidRegex = re.compile(r'(CLM\*)(\d+)')
dxRegex = re.compile(r'(ABK:)(\w\d+)(\*|~)(ABF:)?(\w\d+)?(\*|~)?(ABF:)?(\w\d+)?(\*|~)?(ABF:)?(\w\d+)?(\*|~)?(ABF:)?(\w\d+)?(\*|~)?(ABF:)?(\w\d+)?(\*|~)?(ABF:)?(\w\d+)?(\*|~)?(ABF:)?(\w\d+)?(\*|~)?')
claimids = []
dxinfo = []
for dirpath, dirnames, filename in os.walk(base_dir):
for filename in filename:
txtfile_full_path = os.path.join(dirpath, filename)
x12 = open(txtfile_full_path, 'r')
for i in x12:
match = claimidRegex.findall(i)
for word in match:
claimids.append(word[1])
x12.seek(0)
for i in x12:
match = dxRegex.findall(i)
for word in match:
dxinfo.append(word)
x12.close()
datadic = dict(zip(claimids, dxinfo))
あなたは 'os.path.join(DIRPATH、名前のようなものを使用する必要があります) ' –
だから、あなたの作業ディレクトリには' medicare.txt'が見当たらないので、フルパスか認識できる相対パスを指定する必要があります。 –
元、私はこれを撃ったが、私は同じエラーが発生し続ける。 FileNotFoundError:[エラー番号2]このようなファイルまたはディレクトリ:os.walkでDIRPATH、にdirnames、ファイル名(BASE_DIR)のための 'medicare.txt' ': ファイル名のファイル名に: #definingファイルタイプ txtfile = (ファイル名) ' –