Python 可以在任何目录中运行的脚本
目前,我已经创建了一个代码,可以从.csv文件中的数据生成图形。但是,我只能在包含csv文件的文件夹中存在该代码时运行该代码。如何在脚本文件中创建脚本文件,使其不必与.csv文件位于同一目录中。另外,我希望相同的脚本读取其他目录中的每个csv文件 为什么下面的代码是错误的Python 可以在任何目录中运行的脚本,python,Python,目前,我已经创建了一个代码,可以从.csv文件中的数据生成图形。但是,我只能在包含csv文件的文件夹中存在该代码时运行该代码。如何在脚本文件中创建脚本文件,使其不必与.csv文件位于同一目录中。另外,我希望相同的脚本读取其他目录中的每个csv文件 为什么下面的代码是错误的 Here=os.path.dirname(os.path.abspath(__file__)) directory = "path of directory" listing = os.listdir(directory) f
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继续说,如果它说没有这样的文件或目录,那么您的路径有问题。打印出来以确定。