0

Windows 7 で Python 2.7 を使用しています。

実行前のファイル:

build=\\server\build
apps=\\server\aps
logs=\\server\logs

次のコマンドを実行します。

python test1.py \\serverbuild\loc \\serverapps\loc \\serverlogs\logs

test.py の内容:

import sys
import os
import re
import shutil

buildpath = sys.argv[1]
buildpath = buildpath.replace('\\', '\\\\')
appspath = sys.argv[2]
appspath = appspath .replace('\\', '\\\\')
logspath = sys.argv[3]
logspath = logspath .replace('\\', '\\\\')

tf = open('tmp', 'a+')

with open('test1.txt') as f:
    for line in f.readlines():
        build = re.sub ('build='r'.*','build='+buildpath,line)
        tf.write(build)
        apps = re.sub ('apps='r'.*','apps='+appspath,line)
        tf.write(apps)
        logs = re.sub ('logs='r'.*','logs='+logspath,line)
        tf.write(logs)

tf.close()
f.close()
shutil.copy('tmp', 'test1.txt')
os.remove('tmp')
exit()

コマンド実行後の現在の出力:

build=\\serverbuild\loc
build=\\server\build
build=\\server\build
apps=\\server\aps
apps=\\serverbuild\loc
apps=\\server\aps
logs=\\server\logslogs=\\server\logslogs=\\serverbuild\loc

コマンド実行後の望ましい出力:

build=\\serverbuild\loc
apps=\\serverapps\loc
logs=\\serverlogs\logs

希望の出力を得るのを手伝ってくれる人はいますか? 私はPythonとプログラミングが初めてで、これについて助けが必要です。事前にたくさんありがとう。

4

1 に答える 1

0

for ループを次のコードに置き換えたところ、機能しました。

with open('test1.txt') as f:
    line1 = f.readline()
    line2 = f.readline()
    line3 = f.readline()
    build = re.sub ('build='r'.*','build='+buildpath,line1)
    apps = re.sub ('apps='r'.*','apps='+appspath,line2)
    logs = re.sub ('logs='r'.*','logs='+logspath,line3)
    tf.write(build + apps + logs)
于 2013-06-04T00:17:04.110 に答える