由于python认为有以下事实,我在阅读我要打开的文件内容时遇到问题:
"没有这样的文件或目录:' Filename.xrf'"
以下是我的代码概述以及我认为问题可能是:
用户的输入定义了文件所在的路径。
direct = str(raw_input("Enter directory name where your data is: ))
path = "/Users/myname/Desktop/heasoft/XRF_data/%s/40_keV" \
%(direct)
print os.listdir(path)
# This lists the correct contents of the directory that I wanted it to.
所以在这里我基本上让用户决定他们想要操作哪个目录,然后再选择一个名为" 40_keV"的目录路径。
在定义的函数中,我使用OS模块导航到相应的目录,然后将40_keV目录中的每个文件追加到名为dataFiles的列表中。
def Spectrumdivide():
dataFiles = []
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith('.xrf'):
dataFiles.append(file)
此处,正确的文件已附加到列表&{39; dataFiles
',但我认为这可能是问题发生的地方。我不确定Python
是否正在将文件的名称添加到我的列表而不是实际的文件对象。
代码中断是因为python认为没有这样的文件或目录。
for filename in dataFiles:
print filename
f = open(filename,'r') # <- THE CODE BREAKS HERE
print "Opening file: " + filename
line_num = f.readlines()
同样,在循环的第一次迭代中从dataFiles [0]打印正确的文件,但随后产生了这个常见错误:
IOError: [Errno 2] No such file or directory: '40keV_1.xrf'
我使用Anaconda
启动器来运行Spyder (Python 2.7)
,文件是包含两列长度相等的文本文件。目标是将每列分配到列表中并相应地操作它们。
答案 0 :(得分:2)
您需要使用os.path.join
函数附加路径名称,而不仅仅是文件的名称。
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith('.xrf'):
dataFiles.append(os.path.join(root, file))