6

二重引用符は次のようになります "。これを python 文字列内に配置すると、これが得' " 'られます。Python では、文字列に 2 つの二重引用符を配置でき' "" '、これは 2 つの二重引用符として出力されます。ただし、単一の二重引用符を配置することはできません前と同じように、文字列で' " '. pydev を使用して Eclipse でこれを実行すると、error: "encountered "\r" (13), after : "". コマンド パイプとファイル名を使用して次のことを実行しようとしています。

logA = 'thing.txt'
cmdpipe = os.popen('copy "C:\upe\' + logA + '"' + ' "C:\upe\log.txt"') 
4

3 に答える 3

3

バックスラッシュをエスケープする必要があります。

logA = 'thing.txt'
cmdpipe = os.popen('copy "C:\\upe\\' + logA + '"' + ' "C:\\upe\\log.txt"') 

通常、r'...'文字列リテラル内にバックスラッシュがある場合は、生の文字列 ( ) を使用します。ただし、@BrenBarn が指摘したように、この場合は機能しません。

于 2012-11-30T19:26:50.830 に答える
2

バックスラッシュをエスケープする必要があります。そうしないと、おかしなことが起こります。

logA = 'thing.txt'
cmdpipe = os.popen(
    'copy "C:\\upe\\' + logA + '"' + ' "C:\\upe\\log.txt"')

編集:よりpythonicな方法はこれでしょう:

logA = 'thing.txt'
cmdpipe = os.popen('copy "C:\\upe\\{}" "C:\\upe\\log.txt"'.format(logA))
于 2012-11-30T19:30:01.537 に答える
0

後のバックスラッシュupeは、最初の一重引用符をエスケープしています。

'copy "C:\upe\' + logA + '"' + ' "C:\upe\log.txt"'
--------------^ add an escape at least here, and it will work!

別のオプションは、より多くのステップでコマンドを作成することです。

basepath = r'C:\upe'
inpath = os.path.join(basepath, logA)
outpath = os.path.join(basepath, 'log.txt')
logA = 'thing.txt'
command = 'copy "%s" "%s"' % (inpath, outpath)

print command

cmdpipe = os.popen(command)
于 2012-11-30T19:36:12.430 に答える