python - python 路径名中需要的入门

标签 python csv path relative-path absolute-path

我是一个非常新手的编码员,Python 是我的第一门(实际上也是唯一的)语言。作为一项研究工作的一部分,我负责处理一组数据分析脚本,首先是让它们在我的计算机上运行。我能够做到这一点,主要是通过删除所有标识路径的编码行,并通过在相关模块和 CSV 文件所在的目录中打开的 Jupyter 终端运行脚本,以便脚本知道在哪里查找(我知道 Python 默认到终端的位置)。

这是我不明白其功能的特定代码块

  import sys

  sys.path.append('C:\Users\Ben\Documents\TRACMIP_Project\mymodules/')

  import altdata as altdata

我已经将原始代码中的路径名替换为指向模块所在目录的路径名;包含最终在此处引用的所有 CSV 文件的文件也在 mymodules 中。

这取决于我打开终端的位置,但我能让它始终如一地工作的唯一方法是在 mymodules 中打开终端,这现在很好,但当我需要通过访问远程服务器。我需要更准确地理解这里正在做什么,以及它与终端位置的关系(我发现的所有文档对于我的知识水平来说都过于技术化)。

这是我不明白的另一个片段

import os.path
csvfile = 'csv/' + model +'_' + exp + '.csv'
if os.path.isfile(csvfile):   # csv file exists 
hcsvfile   = open(csvfile )

我发现它正在寻找 CSV 文件,但我不确定如何寻找。我也不确定为什么在某些情况下,根据我打开终端的位置,它能够找到模块而不是 CSV 文件。

我希望对我所呈现的内容进行解释,但更一般地说,我希望获得解释路径的信息(或信息链接)以及它们在模块中的脚本中的工作方式,以及操作它们的方法。谢谢。

最佳答案

sys.path

这是一个简单的目录列表,python 将在其中查找模块和包(.py 和带有 __init__.py 文件的目录,查看 modules tutorial )。扩展此列表将允许您从非默认位置加载模块(自定义库等)(通常您需要在运行时更改它,对于静态目录,您可以修改启动脚本以添加所需的环境变量)。

os.path

This module implements some useful functions on pathnames.

... 并允许您查明文件是否存在,是否为链接、目录等。

为什么加载 *.csv 失败?

因为 sys.path 负责模块加载而且只负责这个。当您使用相对路径时:

csvfile = 'csv/' + model +'_' + exp + '.csv'

open()将在当前工作目录

中查找

file is either a string or bytes object giving the pathname (absolute or relative to the current working directory)...

您需要通过使用 os.path 模块构造它们来使用绝对路径。

关于python - python 路径名中需要的入门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38105213/

相关文章:

python - timeit 的奇怪结果

python - 使用python根据行中的位置和长度解析ascii文件

javascript - 如果数据的格式略有损坏,是否仍然可以确定其文件类型?

python - 'geckodriver' 可执行文件需要在 PATH 中

node.js - Node 未找到全局模块

python - 使用 np.savetxt 将数组保存为列

python - 从 .deb 与 .tar.gz 安装 Django 的好处?

python - 在 Python 版本之间切换?

python - 属性错误:模块 'pandas.tseries.frequencies' 没有属性 'is_subperiod'

php - mysql 结果到数组写入 csv 文件?