在Python中将文件路径作为命令行参数传递

8

我需要在Python中通过命令行传递文件并将内容写入文件中。我正在使用以下代码mycode.py

import csv
import sys

path = sys.argv[1]
row = ['4', ' Danny', ' New York']

with open(r"path" , 'w') as csvFile:
writer = csv.writer(csvFile)
writer.writerow(row)

当我执行它时,文件没有被写入,但是当我硬编码路径时,文件就被写入了。
 with open(r"C:\Users\venkat\Desktop\python\sam.csv", 'w') as 
 csvFile:

文件正在被写入,请告诉我是否有遗漏。

还有一个要求是我只能传递目录,在打开时附加一些文件名。 例如:我可以传递

C:\Users\venkat\Desktop\python, sam.csv

我必须在代码中将文件名附加到目录中。


1
你正在将"path"作为字符串字面量而不是变量传递。尝试用'path'(不带引号)替换'r"path"'。 - yurgen
4个回答

7
你应该使用变量 path 的值。
替换
with open(r"path" , 'w') as csvFile:

使用

with open(path , 'w') as csvFile:
          ^^^^

如果你想将一个文件添加到一个目录路径中,你可以使用os包。

file_path = os.path.join(path, file)

好的,这个可行,我怎么在路径后面添加文件名呢? 例如:我的路径变量是C:\Users\venkat\Desktop\python,我应该将sam.csv作为文件附加到路径中。 - Venkat J
你可以使用os包。 os.path.join(path, file) - Mihai Alexandru-Ionut
2
os.path.join(path, "file_name"),其中文件名为字符串,在我的路径目录下创建一个文件。非常感谢。 - Venkat J

4

好的,这个有效了。

import csv
import sys

path = sys.argv[1]
row = ['4', ' Danny', ' New York']

with open(path, 'w') as csvFile:
    writer = csv.writer(csvFile)
    writer.writerow(row)

0
如果您想要追加(或写入)现有文件,可以使用format来实现:
path="insert\\pathOf\\file.txt"
with open("{}".format(path),'a') as file:
    file.write("excellent\n") 

'a' 代表追加,所以它会将 'excellent' 字符串添加到 file.txt 文件中。 如果你想要写一个新文件,只需用 'w' 替换 'a'。

使用 'w' 将覆盖已经存在的 file.txt 文件。 \n 是为了在新行结束,所以如果你运行相同的代码两次,它将在两个不同的行中添加 'excellent' 而不是并排。


-1

如果你想将它转换为原始格式,你应该添加花括号

with open(rf"{path}" , 'w') as csvFile:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接