在windows7上使用python解析.csv文件时从变量获取路径

时间:2017-12-12 11:27:34

标签: python windows csv windows-7

我正在尝试编写一个python 3.6脚本,它将解析Windows 7上的.csv文件。我还需要从变量(通过sys.argv从键盘)获取我的文件的路径。当它很容易我在linux上尝试过它:

Python 3.6.2 | Continuum Analytics,Inc。| (默认,2017年7月20日,13:51:32) [GCC 4.4.7 20120313(Red Hat 4.4.7-1)] on linux

import sys
import csv
#Run script like
#project.py <source_file_path> <resulting_file_path> 
source = sys.argv[1]
res_file =  sys.argv[2]
fileIn = open(source, 'r')
fileOut = open (res_file, 'w')
with open(str(source),encoding='utf-16') as tsvin:
    tsvin = csv.reader(tsvin, delimiter=';')
    fileOut = open (str(res_file), 'w')
        for row in tsvin:
            fileOut.write(""+"\t"+row [0]+"\t"+row[0]+"\n")

当我切换到Windows7时,它变得更加复杂。最后,我最终得到了这个。

Python 3.6.3(v3.6.3:2c5fed8,2017年10月3日,17:26:49)[MSC v.1900 32位(英特尔)]在win32上

#!/usr/bin/python3
import sys
import csv
#raw_file_path = str(sys.argv[1]) 
#report_path = str(sys.argv[2])
with open (r'C:\Users\folder\source.csv', 'r', newline='', encoding='utf-16') as tsvin:
    tsvin = csv.reader (tsvin, delimiter=';')
    with open (r'C:\Users\folder\res.txt' , 'w') as fileOut:  
        for row in tsvin:
            fileOut.write(""+"\t"+row [0]+"\t"+row[0]+"\n")

如果我尝试使用我的变量而不是真正的路径,我会遇到错误(1):

with open ('r + raw_file_path , 'r', newline='', encoding='utf-16') as tsvin:

OSError: [Errno 22] Invalid argument: "r'C:\\Users\\folder\\source.csv'"

如果我尝试以不同的方式使用我的变量,则出现其他错误(2):

with open (r + raw_file_path , 'r', newline='', encoding='utf-16') as tsvin:

NameError: name 'r' is not defined

我猜,问题是由于引号,但我不知道如何修复它。

1 个答案:

答案 0 :(得分:1)

这不是r的用途。它只适用于文字。如果使用变量,则不需要它。

with open(raw_file_path , 'r', newline='', encoding='utf-16') as tsvin:

当然,如果您的变量在其他地方使用文字字符串定义,那么您将在此时使用r