Python 可以在任何目录中运行的脚本

Python 可以在任何目录中运行的脚本,python,Python,目前,我已经创建了一个代码,可以从.csv文件中的数据生成图形。但是,我只能在包含csv文件的文件夹中存在该代码时运行该代码。如何在脚本文件中创建脚本文件,使其不必与.csv文件位于同一目录中。另外,我希望相同的脚本读取其他目录中的每个csv文件 为什么下面的代码是错误的 Here=os.path.dirname(os.path.abspath(__file__)) directory = "path of directory" listing = os.listdir(directory) f

目前,我已经创建了一个代码,可以从.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)
只需设置
directory=“/path/to/fldr/with/csv”


full\u name=os.path.join(目录,文件)
是的,它是错误的;您需要接受一个参数,该参数告诉脚本在何处查找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

默认情况下仍要查看当前目录。

您列出的是一个空目录(
目录=“”

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


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

您正在为变量“Here”分配您想要的路径,但随后您正在创建一个空字符串变量“directory”,并使用它来提供列表。您的列表将只包含基本文件夹(代码所在的位置)中的文件,因为您只搜索目录“”中的文件。我想你打算用“这里”来做你的清单

directory = Here

由于您正在列出当前目录中的文件,因此根本不需要在此处用
连接名称(因此不需要分配)。作为目录名的空字符串几乎肯定默认为当前目录(唯一合理的选择是它是一个错误)。如果您为
目录
指定了一些其他值,则需要将名称与
目录
连接。这会继续强制脚本与CSV文件位于同一目录中,不是吗?您可以使用
用于当前目录,而无需使用
os.getcwd()
,不是吗?@JonathanLeffler当然!但是listdir返回目录的内容,而getcwd返回目录路径本身。因为他用它来组成一个绝对路径,我想让他知道这个调用也会很有用:)由于某种原因,当我这样做时,我收到一条错误消息,没有这样的文件或目录。你知道为什么吗?我有正确的路线和路线everything@user2614937继续说,如果它说没有这样的文件或目录,那么您的路径有问题。打印出来以确定。