目前,我已经创建了一个代码,可以根据.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)
答案 0 :(得分:1)
只需设置directory="/path/to/fldr/with/csv"
和full_name = os.path.join(directory,files)
答案 1 :(得分: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
默认是查看当前目录。
答案 2 :(得分:0)
您正在列出一个空目录(directory = ''
)。
要获取当前目录,您需要os.getcwd()
。
在指定要操作的目录时,我没有遇到什么问题。可以使用命令行参数完成(查看sys.argv
)。
答案 3 :(得分:0)
您正在为变量“Here”分配所需的路径,但之后您将创建一个空字符串变量'directory'并使用它来提供列表。您的列表将仅包含基本文件夹(您编码的位置)中的文件,因为您只搜索目录“”中的文件。我认为你打算用'Here'来做你的列表
directory = Here