0

目前,我已经创建了一个代码,可以根据 .csv 文件中的数据制作图表。但是,如果该代码存在于包含 csv 文件的文件夹中,我只能运行该代码。如何制作脚本文件,使其不必与 .csv 文件位于同一目录中。另外,我希望相同的脚本读取该其他目录中的每个 csv 文件。

为什么下面的代码是错误的?

Here=os.path.dirname(os.path.abspath(__file__))
directory = "path of directory"
listing = os.listdir(directory)
for files in listing:
    if files.endswith('.csv'):  
    full_name = os.path.join(Here,files)
    df=pd.read_csv(full_name)
4

4 回答 4

1

刚刚设置directory="/path/to/fldr/with/csv"

full_name = os.path.join(directory,files)

于 2013-07-24T17:13:29.630 回答
0

是的,这是错误的;您需要接受一个参数,告诉您的脚本在哪里可以找到 CSV 文件:

import argparse

def import_function(sourcedir):
    for filename in os.listdir(sourcedir):
        csvfilename = os.path.join(sourcedir, filename)
        with open(csvfilename) as csvfile:
            reader = csv.reader(csvfile)
            for row in reader:
                # etc.    

if __name__ == '__main__':
    parser = argparse.ArgumentParser('CSV importer')
    parser.add_argument('sourcedir', default='.')
    options = parser.parse_args()
    import_function(options.sourcedir)

现在你的脚本接受一个命令行参数,一个目录的路径来列出你的文件:

python yourscript.py /path/to/directory

默认仍然是在当前目录中查找。

于 2013-07-24T17:13:41.470 回答
0

您正在列出一个空目录 ( directory = '')。

要获取您需要的当前目录os.getcwd()

我不明白指定要在其中操作的目录有什么问题。可以使用命令行参数来完成(查看sys.argv)。

于 2013-07-24T17:14:11.547 回答
0

您正在将所需的路径分配给变量“Here”,但随后您将创建一个空字符串变量“directory”并使用它来提供列表。您的列表将仅包含您的基本文件夹(您的代码所在的位置)中的文件,因为您只搜索目录“”中的文件。我认为您打算使用“此处”进行列表

directory = Here
于 2013-07-24T17:15:20.653 回答