如何制作可以从任何目录运行的python脚本:脚本文件不必与.csv文件位于同一目录中?

时间:2013-07-24 14:01:47

标签: python python-2.7

目前,我已经创建了一个代码,可以根据.csv文件中的数据生成图表。但是,如果该代码存在于带有csv文件的文件夹中,我只能运行代码。如何创建脚本文件,使其不必与.csv文件位于同一目录中。

2 个答案:

答案 0 :(得分:1)

假设您的意思是在代码中包含固定的CSV文件,请根据脚本路径存储绝对路径:

HERE = os.path.dirname(os.path.abspath(__file__))

csv_filename = open(os.path.join(HERE, 'somefile.csv')

__file__是当前模块或脚本的文件名,os.path.dirname(__file__)是模块所在的目录。对于脚本,__file__可以是相对路径名,因此我们使用{{ 1}}将其转换为绝对路径。

这意味着您可以从任何地方运行脚本。

如果您打算让您的脚本使用任意 CSV输入文件,请使用命令行选项:

os.path.abspath()

其中import argparse if __name__ == '__main__': parser = argparse.ArgumentParser('CSV importer') parser.add_argument('csvfile', type=argparse.FileType('w'), default='somedefaultfilename.csv') options = parser.parse_args() import_function(options.csvfile) 将是一个打开的文件对象,因此您的csvfile可以这样做:

import_function()

答案 1 :(得分:0)

如果您不打算过多地移动csv文件,最好的答案是将csv文件夹的绝对路径硬编码到脚本中。

import os

csvdir = "/path/to/csv/dir"
csvfpath = os.path.join(csvdir, "myfile.csv")
csvfile = open(csvfpath)

您还可以使用命令行解析器(如argparse)让用户轻松更改csv文件的路径。

如果要移动包含脚本和csv文件的文件夹,使用Martijn Pieters的解决方案将仅 。但是,在这种情况下,您也可以只使用csv文件的相对路径。