【发布时间】:2018-02-21 05:20:56
【问题描述】:
我正在使用 python 3.6 创建一个文本解析器。我的文件布局如下:
(我将使用的实际文件结构比这要广泛得多。)
-Directory(main folder)
-amerigroup.txt
-bcbs.txt
childfolder
-medicare.txt
我需要将文本提取到 2 个不同的列表中(遍历并附加到我不断增长的列表中)。每当我运行我当前的代码时,我似乎无法让我的程序打开我的 medicare.txt 文件来读取和提取信息。我收到一条错误消息,指出没有这样的文件或目录:'medicare.txt'。
我的目标是从 3 个文件中获取数据并一次性提取。如何获取 amerigroup 和 bcbs 数据,然后进入子文件夹并获取 medicare.txt,然后对我的文件路径的所有分支重复此操作?
我只是想在这段代码 sn-p 中打开和关闭我的文本文件。到目前为止,这是我所拥有的:
import re
import os
import pandas as pd
#change active directory
os.chdir(r'\\company\Files\HomeDrive\user\My Documents\claimstest')
#rootdir = r'\\company\Files\HomeDrive\user\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()
非常感谢您抽出宝贵时间来帮助我!
编辑:到目前为止,我尝试使用 walk 无济于事。我最近的尝试(我也尝试使用 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 适合任何感兴趣的人。这是我对这个问题的最终解决方案:
import re
import os
import pandas as pd
#change active directory
os.chdir(r'\\company\Files\HomeDrive\user\My Documents\claimstest')
base_dir = (r'\\company\Files\HomeDrive\user\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, name) -
所以,想想看,你的工作目录没有看到任何
medicare.txt,你必须给它一个完整路径或它可以识别的相对路径。 -
juan,我试了一下,但我总是遇到同样的错误。 FileNotFoundError:[Errno 2] 没有这样的文件或目录:'medicare.txt'
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) -
我不知道你在那里做什么。 看起来你没有使用
txtfile_full_path作为open的参数,而是继续使用filename,但谁知道呢,因为我没有知道您的评论从哪里开始或结束。请编辑您的原始问题并在此处添加代码,是否可读。 -
我的错误。我编辑了我的帖子。