【问题标题】:OSError: file not foundOSError:找不到文件
【发布时间】: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


【解决方案1】:

我也有同样的问题。它无法找到.txt 文件,因为您位于错误的目录中。确保您尝试执行代码的位置位于代码所需的目录中。希望这会有所帮助。

【讨论】:

  • 你的回答不够全面。说 OP 从错误的目录执行脚本太笼统了。试着指出问题到底出在哪里以及解决方案到底是什么。
【解决方案2】:

我遇到了同样的问题。就我而言,在 file.txt 中,字符串末尾有一个空格。你应该控制空间!比如file.txt里面(空格=-):

-365-
string1-
string2
-string3

如果您删除所有空格 (-),它应该可以工作!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-23
    • 2020-11-05
    • 2017-07-14
    • 1970-01-01
    • 2022-12-23
    • 2022-01-17
    • 1970-01-01
    • 2020-01-23
    相关资源
    最近更新 更多