【问题标题】:Rewriting file and calling script recurrently反复重写文件和调用脚本
【发布时间】:2023-03-05 06:40:01
【问题描述】:

在我当前的项目中,我正在尝试接收值列表(现在我可以将它们作为字符串列表接收,因为这使得部分代码更容易),文件名,并遍历这些值以更改文件上的值,以便一次向终端提交许多调用。我现在遇到的问题是,我相信,虽然我正在更改值,但提交的文件与初始文件没有什么不同,因为我没有意识到我没有正确地重写文件。

第一部分 - 输入

if __name__ == '__main__':
if len(sys.argv) < 1:
    print "Specify the input"
    exit(1)
f = sys.argv[1]
list = ast.literal_eval(sys.argv[3])

第二部分 - 重写

while i < len(list):
  with open(f, 'r+') as file:
    programFile = file.read()

  for l in range(len(node)):
    if i==0:
        valuesDic.update({"initialValue":list[i]})
    else:
        valuesDic.update({list[i-1]:list[i]})

    multiValuesChange(programFile, valuesDic)

    out_file = open(f, "w")
    out_file.write(programFile)
    out_file.close()
    call(["qsub","-l","h=node10",f])
    i=i+1

第三部分 - multiValuesChange

def multiValuesChange(programFile, valuesDic):

    rc = re.compile('|'.join(map(re.escape, valuesDic)))
    def translate(match):
        return valuesDic[match.group(0)]
    return rc.sub(translate, programFile)

谢谢。

【问题讨论】:

  • 贴出multiValuesChange()函数的代码
  • out_file.write(s) s 变量?
  • 对不起,我有不同版本的代码,并从错误的版本复制到这里。这个 s 应该是 programFile。
  • 你在更新i吗?更好的方法是使用另一个 for i in range(len(lzt)) 而不是 while 循环(并将变量重命名为非关键字)
  • 如果您在谈论列表字符串,我将名称更改为在此处发布,以便在没有其余代码的情况下很明显。感谢您的提醒。

标签: python python-2.7 replace terminal file-writing


【解决方案1】:

您的programFile 是一个字符串。字符串是不可变的。如果你想更新它,你必须在通过multiValuesChange()函数处理后将它收集回来,所以这样做:

programFile = multiValuesChange(programFile, valuesDic)

【讨论】:

    猜你喜欢
    • 2016-08-11
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    相关资源
    最近更新 更多