2017-12-12 16 views
0

Windows 7上で.csvファイルを解析するPython 3.6スクリプトを作成しようとしています。変数(キーボードからsys.argv経由で)。linuxで試したときに簡単でした:Windows7上で.csvファイルを解析する際に変数からのパスを取得する

Python 3.6.2 | Continuum Analytics、Inc. |私はそれがより複雑になったのWindows7に切り替え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") 

上(デフォルトでは、2017年7月20日、夜1時51分32秒) [GCC 4.4.7 20120313(Red Hatの4.4.7-1)]。最後に、私はこれで終わった。

のPython 3.6.3(v3.6.3:2c5fed8、2017年10月3日、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

これは、が対象ではありません。それはリテラルのみです。変数を使用している場合は必要ありません。もちろん

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

あなたの変数は文字列リテラルと別の場所で定義されている場合、あなたはその時点でrを使用します。

+0

ありがとうございました!それはうまくいった。 –

関連する問題