【发布时间】:2019-11-28 07:14:25
【问题描述】:
所以你可以看到如果你搜索我以前的问题,我正在尝试编写一个需要重命名的脚本(在脚本本身中,而不是在文件夹中)一些 .txt 文件以便能够使用它们一个循环,枚举它们。
谢谢你的回答我决定用字典,像这样:
import os
import fnmatch
dsc = {}
for filename in os.listdir('./texto'):
if fnmatch.fnmatch(filename, 'dsc_hydra*.txt'):
dsc[filename[:6]] = filename
print(dsc)
print(dsc['dsc_hydra1'])
'print(something)' 只是为了检查一切是否顺利。
正如我在之前的问题中所说,我需要重命名它们,因为我将在未来的函数中使用它们,并且我不想使用所有这些路径内容来解决它们,例如:
IFOV= gi.IFOV_generic(gmatOUTsat1,matrixINPUTsat1,dsc['dsc_hydra1'],'ifovfileMST.json',k_lim, height, width)
使用dsc['dsc_hydra1'],我得到这个错误:
Traceback (most recent call last):
File "mainSMART_MST.py", line 429, in <module>
IFOV1= gi.IFOV_generic(gmatOUTsat1,matrixINPUTsat1,dsc['dsc_hydra1'],'ifovfileMST.jso',k_lim, height, width)
File "/home/alumno/Escritorio/HDD_Nuevo/HO(PY)/src/generateIFOV.py", line 49, in IFOV_generic
DCM11,DCM12,DCM13,DCM21,DCM22,DCM23,DCM31,DCM32,DCM33 = np.loadtxt(gmatDCM,unpack=True,skiprows = 2,dtype = float)
File "/home/alumno/.local/lib/python3.5/site-packages/numpy/lib/npyio.py", line 962, in loadtxt
fh = np.lib._datasource.open(fname, 'rt', encoding=encoding)
File "/home/alumno/.local/lib/python3.5/site-packages/numpy/lib/_datasource.py", line 266, in open
return ds.open(path, mode, encoding=encoding, newline=newline)
File "/home/alumno/.local/lib/python3.5/site-packages/numpy/lib/_datasource.py", line 624, in open
raise IOError("%s not found." % path)
OSError: dsc_hydra1.txt not found.
我已经检查了文件夹并且文件在那里,为什么我一直收到这个错误?
【问题讨论】:
-
您是否将文件夹路径添加到文件名中?我看到你正在循环通过
./texto,但是你没有尝试打开./texto/dsc_hydra1.txt -
在您的情况下,您似乎正在尝试在与脚本相同的目录中搜索这些文件,您会看到
os.listdir('your/path/')没有为您提供文件的完整路径,它只提供了完整的文件名,没有它的路径。我建议你这样做:dsc[filename[:6]] = os.path.normpath(''.join(['./texto', '/', filename])). -
我不太确定是否需要打开文件本身。我认为字典已经直接在路径上读取它(./texto),所以当稍后在引用字典时使用它时'(dsc ['dsc_hydra1'])'我认为它应该可以工作。
-
os.path.normpath()不会打开文件,它会规范化该文件的路径。 -
所以我应该打开文件而不是规范化路径?
标签: python python-3.x file-not-found