FileNotFoundError 但文件存在

2024-04-01

我正在创建一个导入许多 JSON 文件的 Python 应用程序。这些文件与 python 脚本位置位于同一文件夹中。在我将整个文件夹移到其他地方之前,文件已完美导入。由于脚本会在不存在文件的情况下创建一个文件,因此它会继续在主目录中创建该文件,同时忽略它所在的同一文件夹中的文件。当我指定绝对路径时(下面的代码):

startT= time()
    with open('~/Documents/CincoMinutos-master/settings.json', 'a+') as f:
        f.seek(0,0) # places pointer at start of file
        corrupted = False
        try:
            # turns all json info into vars with load
            self.s_settings = json.load(f)
            self.s_allVerbs = []
            # --- OFFLINE MODE INIT ---
            if self.s_settings['Offline Mode']: # conjugation file reading only happens if setting is on
                with open('~/Documents/CincoMinutos-master/verbconjugations.json', 'r+', encoding='utf-8') as f2: 
                    self.s_allVerbs = [json.loads(line) for line in f2]
            # --- END OFFLINE MODE INIT ---
            for key in self.s_settings:
                if not isinstance(self.s_settings[key], type(self.s_defaultSettings[key])): corrupted = True
        except Exception as e: # if any unexpected error occurs
            corrupted = True
            print('File is corrupted!\n',e)
        if corrupted or not len(self.s_settings):
            f.truncate(0) # if there are any errors, reset & recreate the file
            json.dump(self.s_defaultSettings, f, indent=2, ensure_ascii=False)
            self.s_settings = {key: self.s_defaultSettings[key] for key in self.s_defaultSettings}
    # --- END FILE & SETTINGS VAR INIT ---
    print("Finished loading file in {:4f} seconds".format(time()-startT))

它会输出 FileNotFound 错误。

    Traceback (most recent call last):
  File "/Users/23markusz/Documents/CincoMinutos-master/__main__.py", line 709, in <module>
    frame = CincoMinutos(root)
  File "/Users/23markusz/Documents/CincoMinutos-master/__main__.py", line 42, in __init__
    with open('~/Documents/CincoMinutos-master/settings.json', 'a+') as f:
FileNotFoundError: [Errno 2] No such file or directory: '~/Documents/CincoMinutos-master/settings.json'

请记住,当我从终端操作时,我完全能够使用相同的绝对路径访问它。有人可以解释一下我需要做什么才能正确导入文件吗?

另外,我正在为多个用户创建此应用程序。尽管/Users/23markusz/Documents/CincoMinutos-master/verbconjugations.json确实有效,但它不会在其他用户的系统上。该文件也与脚本位于同一文件夹中,因此它应该正确导入。

UPDATE:虽然我的问题是使用 os.path.expanduser() 解决的,但我仍然不明白为什么 python 拒绝打开与 python 脚本位于同一文件夹中的文件。它应该仅使用文件名而不是绝对路径自动打开文件。


"~"不是真正的目录(并且不符合“绝对路径”的条件),这就是打开不起作用的原因。

为了将波形符扩展到实际目录(例如/Users/23markusz), 您可以使用os.path.expanduser https://docs.python.org/3/library/os.path.html#os.path.expanduser:

import os
...
with open(os.path.expanduser('~/Documents/CincoMinutos-master/settings.json'), 'a+') as f:
    # Do stuff
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FileNotFoundError 但文件存在 的相关文章

随机推荐

  • 从javascript隐藏handsontable的列

    有什么方法可以隐藏 JavaScript 中的热门列吗 要求是要隐藏的列将作为 javascript 中的参数出现 并且相应的列将相应地显示隐藏 HOT 有 rowHeaders 和 colHeaders 以及 20 列的数据 请指教 过时
  • 如何在 zip 文件上使用 grep 命令

    我想从 zip 文件中 grep 查找今天的日期 怎么能做到这一点呢 我有一个名为 sen2616 z 的 zip 文件 我想获取今天日期 09 02 2014 的所有数据 请用zipgrep zgrep适用于 gz 文件 不适用于 zip
  • 查找后面不跟某个字符的“单词”

    搜索的正则表达式是什么word后面不跟的字符串 symbol 例如 mywordLLD OK myword dff OK myword ld Exclude The 消极的展望 http www regular expressions in
  • YouTube API - 按发布日期查询

    我正在编写一个网络应用程序 它使用 YouTube 代码 API 来执行特定类型的搜索 在本例中 我尝试搜索与查询匹配且在两个日期之间上传的所有视频 这个文件 http code google com apis youtube 2 0 de
  • 在Python中将文件更改为只读模式

    我正在编写一个数据处理代码 在其中创建一个新文件 将处理后的数据写入该文件并关闭 但该文件必须以只读模式关闭 以免被意外修改 这可以用 Python 完成吗 为此 您使用os chmod https docs python org 2 li
  • 有 Groovy 的源代码格式化程序吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我在 Java 项目中使用 Jalopy 的商业版本 但它不适用于 Groovy 文件 Intelli
  • 处置 SqlCommand

    Because SqlCommand实施IDisposable 我通常会按如下方式处理 ADO 查询 using SqlConnection connection new SqlConnection connectionString usi
  • 测试 Javascript 中未定义的嵌套对象[重复]

    这个问题在这里已经有答案了 可能的重复 javascript测试嵌套对象键是否存在 https stackoverflow com questions 2631001 javascript test for existence of nes
  • GruntJs 'grunt' cmd 打开 Visual Studio?

    我已经能够使用GruntJs https github com cowboy grunt在几个零问题的个人项目上 我决定在我的工作项目中使用它 I run grunt init gruntfile这样就可以创建 gruntfile 和 pa
  • oracle 11G中自动删除最旧的分区

    如果分区超过三个月 我需要从间隔分区表中删除分区 是否有 Oracle 实用程序 函数可以执行此操作 或者如果没有 如何实现 请指导我 Database version Oracle 11G 我不知道有任何 Oracle 实用程序或函数可以
  • 索引有不同的表空间有什么逻辑原因吗?

    您好 有人可以告诉我为什么我们为索引和数据创建不同的表空间吗 人们普遍认为 将索引和表保存在单独的表空间中可以提高性能 现在 许多受人尊敬的专家认为这是一个神话 参见这个 问汤姆 主题 搜索 神话 https asktom oracle c
  • J2ME中的GUI设计

    我最近一直在研究移动编程 我实际上尝试了J2ME 抛光 GUI 框架 http www j2mepolish org 虽然用 Polish 制作的 GUI 看起来相当不错 但我意识到用户界面并不是我想要的 我开始在网络上搜索 Stack O
  • WPF 在选择时更改 ListboxItem 突出显示颜色

    我在设置时遇到问题HighlightBrushKey of a SelectedItem of a Listbox在 WPF 中 我的目的是根据代码中给定的布尔值设置项目的颜色 我尝试了以下步骤 实现转换器 检查布尔值并返回正确的颜色 例子
  • openssl 1.1.0 中替代 AES_ctr128_encrypt 的确切替代 API 是什么?

    我需要在 CTR 模式下使用 128 位 AES 算法来从 openssl 库进行加密 但似乎相应的函数AES ctr128 encrypt已从openssl 1 1 0g中删除 因为我收到以下错误 Documentation or ref
  • Html:无需控件即可播放音频?

    当用户单击图像时 我需要播放 mp3 音频文件 我只想播放音频 即不应该有控件 小部件等 浏览器也不应该启动外部应用程序 编辑 好的 我也许可以尝试一下 flash 有推荐的轻量级Flash播放器吗 现在有办法做到这一点 把这个
  • 更改Delphi中单元的初始化顺序

    我正在使用 Delphi XE7 开发 Windows 32 位应用程序 我的应用程序包含许多单元 其中有一个初始化部分 我需要首先初始化一个特定的初始化部分 可以设置优先级吗 我尝试在 dpr 文件中写入初始化部分 但编译器拒绝了这一点
  • Backbone - 从 API 获取 JSON 数据

    这几天我在玩Backbone 我想从 Twitter 搜索 API 接收一些数据 但我真的不明白它是如何工作的 这是我的代码 function Tweet Backbone Model extend Tweets Backbone Coll
  • 调用 .next() 方法时扫描仪出现 NoSuchElementException

    在 Java 中 我收到此异常 Exception in thread main java util NoSuchElementException at java util Scanner throwFor Unknown Source a
  • pthread_mutex_t VS @synchronized 块?

    static pthread mutex t gLock global pthread mutex init gLock NULL in init pthread mutex lock gLock for int i 0 i lt mess
  • FileNotFoundError 但文件存在

    我正在创建一个导入许多 JSON 文件的 Python 应用程序 这些文件与 python 脚本位置位于同一文件夹中 在我将整个文件夹移到其他地方之前 文件已完美导入 由于脚本会在不存在文件的情况下创建一个文件 因此它会继续在主目录中创建该