我的项目有一堆csv文件,可能会也可能不会根据用户输入调用。我想将这些文件存储在一个子目录中,以保持我的项目文件夹整洁。我对如何做到完全感到困惑。我挖出的大部分资源都涉及从子目录而不是基本数据文件中导入模块或包。
导入我的csv的代码行目前如下:
target_doc = csv.reader(open('sample.csv', 'rU'), delimiter=",", quotechar='|')
我假设一个解决方案将涉及设置路径变量,使用import os和import sys,并且可能将此行分成多个部分?
答案 0 :(得分:7)
您可以按文件路径打开文件。只需使用open('/path/to/file')
。
仅对模块和包进行导入 - Python源代码。
这里唯一真实的注意事项是使用os.path.join()
加入路径,以便在不同的操作系统和文件系统之间实现良好的兼容性。 os.path
模块的其余部分也值得一看,无论文件涉及到哪里。另一个使用windows路径的常见陷阱是使用反斜杠转义字符,所以你必须转义反斜杠("some\\file"
) - 一个丑陋的选项,使用原始字符串(r"some\file"
),使用正斜杠(Python实际上会处理这自动),或 - 最好的选择,将您的路径作为参数传递给前面提到的os.path.join()
。
值得注意的是,使用the with
statement会改善您的代码。
e.g:
with open(os.path.join("path", "to", "file.csv"), 'rU') as file:
target_doc = csv.reader(file, delimiter=",", quotechar='|')
...
使用with
可确保您的文件关闭 - 即使发生异常。
答案 1 :(得分:1)
你走错了路。 Python路径和导入仅用于将其他python代码“链接”到您的系统中。通过指定文件的完整路径来访问系统用作资源的其他文件:
target_doc = csv.reader(open('/resources/csv_files/sample.csv', 'rU'), delimiter=",", quotechar='|')
或运行python文件的相对路径:
target_doc = csv.reader(open('csv_files/sample.csv', 'rU'), delimiter=",", quotechar='|')
答案 2 :(得分:0)
您可以使用
import os
cwd = os.path.dirname(__file__) # get current location of script
然后使用os.path.join(cwd,'some /../ path')构建你喜欢的任何位置的绝对路径;所以你的路径只相对于你的脚本位置,无论python解释器的当前工作目录如何。 如果你不想依赖unix的'/'惯例,Mai也会使用os.sep。
答案 3 :(得分:0)
为什么不简单地使用:
path_in ='/ directory @whatever_it_is / sample_data.csv'
sample_data = pd.read_csv(path_in)