2017-12-12 4 views
0

Windows 7에서 .csv 파일을 구문 분석하는 python 3.6 스크립트를 작성하려고합니다. 또한 파일의 경로를 가져와야합니다. 변수 (키보드에서 sys.argv를 통해). 리눅스에서 시도한 것은 쉽습니다.windows7에서 파이썬으로 .csv 파일을 구문 분석하는 동안 변수에서 경로 가져 오기

Python 3.6.2 | Continuum Analytics, Inc. | (기본 7 월 (20) 2017 13시 51분 32초)

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의로 전환 리눅스

에 [GCC는 4.4.7 20120313 (레드햇 4.4.7-1)]을 더 복잡하게되었다. 마지막으로, 나는 이것으로 끝났다.

파이썬 3.6.3 (v3.6.3 : 2c5fed8 10 월 3 2017 17시 26분 49초)는 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") 

에 [MSC v.1900 32 비트 (인텔)] 내가 사용하려고하면 대신 실제 경로 내 변수가 나는 오류 (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 

문제는 따옴표로 인한 것 같지만 해결 방법을 모릅니다.

+0

파일 열기 문에서 "r"을 제거하면 문제가 해결됩니다! –

답변

1

이것은 r이 대상이 아닙니다. 리터럴 전용입니다. 변수를 사용하는 경우 필요하지 않습니다. 당신의 변수가 리터럴 문자열과 다른 곳에서 정의 된 경우

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

물론, 당신은 그 시점에서 r을 사용합니다.

+0

정말 고마워요! 그것은 운동했다. –

관련 문제