我只是想用Python修改一个CSV文件。
当所有文件都在同一个目录时,一切正常。
既然输入文件在不同的目录中,而不是输出文件,一切都爆炸了,显然b/c文件不存在?
我首先发现这个:Python中的open()如果文件不't存在,则不创建文件
然后我学会了切换到目录,这帮助我循环遍历目标目录中的csv:在Python中向上移动一个目录
当我运行命令时:python KWRG.py ../Weekly Reports - Inbound/Search Activity/ 8/9/2021
我将得到:Traceback (most recent call last): File "KWRG.py", line 15, in <module> with open(args.input, 'r') as in_file, open(args.output, 'w') as out_file: IsADirectoryError: [Errno 21] Is a directory: '../Weekly Reports - Inbound/Search Activity/'
对不起,如果我在这里错过了显而易见的,但为什么文件没有在我指向脚本的目录中创建(或者根本没有)?
代码:
import csv
import argparse
import os
# Create a parser to take arguments
#...snip...
cur_dir = os.getcwd()
reports_dir = os.chdir(os.path.join(cur_dir, args.dir))
for csv_file in os.listdir(reports_dir):
# Shorthand the name of the file
#...snip...
# Open the in and out files
with open(csv_file, 'r') as in_file, open(f'{out_name}-Search-Activity-{args.date}.csv', 'w+') as out_file:
# Re-arrange CSV
# EOF
你的问题是这一行:
reports_dir = os.chdir(os.path.join(cur_dir, args.dir))
os.chdir()
不返回任何东西,它只是执行请求的操作-更改当前工作目录。从与REPL的交互会话中:
>>> import os
>>> result = os.chdir("/Users/mattdmo/")
>>> result
>>>
对于你的目的,你所需要的是
reports_dir = os.path.join(cur_dir, args.dir)
你就会一切就绪。