2

我的项目有一堆 csv 文件,可能会或可能不会根据用户输入调用。我想将这些文件存储在一个子目录中,以保持我的项目文件夹整洁。我对如何做到这一点感到非常困惑。我挖掘的大多数资源都涉及从子目录而不是基本数据文件导入模块或包。

导入我的 csv 的代码行当前如下所示:

target_doc = csv.reader(open('sample.csv', 'rU'), delimiter=",", quotechar='|')

我假设解决方案将涉及设置路径变量,使用 import os 和 import sys,并且可能将这条线分成多个部分?

4

4 回答 4

8

您可以通过文件路径打开文件。只需使用open('/path/to/file').

仅模块和包需要导入 - Python 源代码。

这里唯一真正的注意事项是使用os.path.join()where 连接路径,以便在不同的操作系统和文件系统之间实现良好的兼容性。无论涉及文件,该os.path模块的其余部分也值得一看。Windows 路径的另一个常见陷阱是使用反斜杠转义字符,因此您必须转义反斜杠 ( "some\\file") - 一个丑陋的选项,使用原始字符串 ( r"some\file"),使用正斜杠(Python 实际上会自动处理这个),或者 - 最好的选择,将您的路径作为参数传递给上述os.path.join().

还可能值得注意的是,使用with语句会改进您的代码。

例如:

with open(os.path.join("path", "to", "file.csv"), 'rU') as file:
    target_doc = csv.reader(file, delimiter=",", quotechar='|')
    ...

使用with确保您的文件被关闭 - 即使发生异常。

于 2012-04-19T19:55:59.467 回答
1

您可以使用

import os
cwd = os.path.dirname(__file__) # get current location of script

然后使用 os.path.join(cwd, 'some/../path') 构造到您喜欢的任何位置的绝对路径;因此,您的路径仅与您的脚本位置相关,而与 python 解释器的当前工作目录无关。如果您不想依赖 unix 的“/”约定,Mai 也可以使用 os.sep。

于 2012-04-19T19:59:04.073 回答
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='|')
于 2012-04-19T20:01:50.307 回答
0

你为什么不简单地使用:

path_in = '/directory_whatever_it_is/sample_data.csv'

sample_data = pd.read_csv(path_in)

于 2017-06-15T12:35:06.937 回答