python-使用“打开”打开目录中的所有纯文本文件;。dta“;扩展和向csv写入行

python-使用“打开”打开目录中的所有纯文本文件;。dta“;扩展和向csv写入行,python,parsing,Python,Parsing,我有许多纯文本配置文件(.dta),它们分布在27个子目录中。我正试图将它们中的一些信息解析成一个更容易使用的公共文档 到目前为止,我已经: import linecache import csv import os csvout = csv.writer(open("dtaCompile.csv","wb")) directory = os.path.join("c:\\","DirectKey") for root,dirs,files in os.walk(directory): fo

我有许多纯文本配置文件(.dta),它们分布在27个子目录中。我正试图将它们中的一些信息解析成一个更容易使用的公共文档

到目前为止,我已经:

import linecache
import csv
import os

csvout = csv.writer(open("dtaCompile.csv","wb"))

directory = os.path.join("c:\\","DirectKey")
for root,dirs,files in os.walk(directory):
for file in files:
    if file.endswith(".DTA"):
        f=open(file,'r')

        lines = f.readlines()
        description = lines[1]
        articleCode = lines[2]
        OS = lines[25]
        SMBIOS = lines[32]
        pnpID = lines[34]
        cmdLine = lines[28]
        csvout.writerow([SMBIOS, description, articleCode, pnpID, OS, cmdLine])
        f.close()
我得到以下错误:

 Traceback (most recent call last):
   File "test.py", line 11, in <module>
   f=open(file,'r')
   IOError: [Errno 2] No such file or directory: '000003APP.DTA'
回溯(最近一次呼叫最后一次):
文件“test.py”,第11行,在
f=打开(文件,'r')
IOError:[Errno 2]没有这样的文件或目录:“000003APP.DTA”
而不是

    f=open(file,'r')
你需要什么

    f=open(os.path.join(directory, root, file),'r')
file只是文件名,没有说明文件的路径。您必须使用os.path.join和各种组件来创建完整路径,而不是:

if file.endswith(".DTA"):
    file = os.path.join(directory, root, file)
f=open(file,'r')
尝试:


我的猜测是,您正在执行的程序所在的目录与您正在浏览的目录不同

尝试打印: os.getcwd() 要查看。

请考虑使用
f = open(os.path.join(directory, file), "r")