【问题标题】:Relative pathway inconsistency in VS codeVS 代码中的相对路径不一致
【发布时间】:2021-08-13 20:56:12
【问题描述】:

我最近迁移到双启动 Windows/Ubuntu 系统,并在两者之间共享了我的脚本和 VScode 工作区。

因为我在两个不同的操作系统之间工作,所以我确保将所有文件路径更改为使用相对路径而不是绝对路径。然而,它们在 VScode un ubuntu 中似乎都被破坏了。

我制作了一个简单的文件结构来尝试找出问题所在,但我没有任何运气

- Directory1:
  - csv1.csv
  - Directory2:
    - csv1.csv
    - test.py

对于 test.py,我编写了一个超级简单的脚本来将 csv 文件加载到 Pandas 数据帧中

import pandas as pd

df  = pd.read_csv("../csv1.csv")

print(df)

df = pd.read_csv("../csv1.csv")此相对路径适用于 Ubuntu shell、Windows cmd 和 VS 代码(在 windows 上)

df1 = pd.read_csv("Directory1/Directory2/csv2.csv") 这个相对路径在 VS 代码中有效(在 Ubuntu 中)

我很困惑该怎么做,我已经尝试过四处搜索。如果我在 VScode(在 Ubuntu 中)打开相同的工作区并尝试引用同一目录中的文件,我会收到一条错误消息,通知我它不存在。

【问题讨论】:

    标签: python pandas visual-studio-code filepath


    【解决方案1】:

    您需要使用标准库 pathlib 中的 Path 对象而不是常规字符串

    https://docs.python.org/3/library/pathlib.html

    这将使 Posix 和 Windows 之间的差异不会导致这些问题

    from pathlib import Path
    import pandas as pd
    
    p = Path('..') / 'csv1.csv'
    
    df  = pd.read_csv(p)
    
    print(df)
    

    【讨论】:

    • 谢谢吉姆,我尝试了你的建议,但我仍然遇到同样的错误。虽然此命令在 Ubuntu 终端、Windows cmd 和 VScode 在 Windows df = pd.read_csv("../dir1.csv") 上运行良好,但要在 Ubuntu 上的 VScode 中获得输出,我需要 df = pd.read_csv("Dir1/dir1.csv")
    • 这可能是因为它在 Ubuntu 和 Windows 版本之间使用不同的工作目录运行。您可以添加print(os.getcwd()) 来查看
    • 我想我已经解决了!感谢您的帮助。我认为它在打开的文件夹中运行,而不是在文件目录中运行。我最终回到了我做过的第一个 Python 教程,并意识到我必须勾选一个框“在文件目录中执行”。
    猜你喜欢
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 2022-07-11
    • 2021-12-11
    • 2021-11-07
    • 2016-05-16
    • 1970-01-01
    • 2012-01-09
    相关资源
    最近更新 更多