有没有一种方法可以在循环期间从同一字符串保存多个文件?

时间:2019-07-12 16:55:20

标签: python

我正在遍历excel文档并尝试为excel中的每一行保存一个不同的文本文件。我想使用相同的命名格式

我试图做一个f字符串,这给了我一个语法错误或保存文件,如下所示:

endfile1 = (r"C:\Users\jrwaller\Documents\Automated Eve\Raw Data for {projectNum}.eve")

用于命名文件的for循环的示例是:

for i in range (10, finalrow, 1):

    projectNum = sheet.cell(i,1).value  #assigns project number
    print(projectNum)                                           #test
    #sets up file string names for later
    endfile1 = (r"C:\Users\jrwaller\Documents\Automated Eve\ITP19_Y02_F1_2018-10-03 {projectNum}.eve")

以便以后可以(使用先前定义的newBaseCase和longstr1):

      with open(longStr1) as old_file:
            with open(endfile1, "w") as new_file:
                for line in old_file:
                    if "BASE CASE" in line:
                        line = newBaseCase + line
                    new_file.write(line)

我希望这样,如果excel有两行项目,它将节省一个 Proj1.txt的原始数据和Proj2.txt的原始数据(其中“ ProjX”取自excel),但按照目前的设置,当前会保存一个名为{projectNum}的原始数据文件

2 个答案:

答案 0 :(得分:0)

您需要调用.format()来用变量替换{projectNum}

endfile1 = r"C:\Users\jrwaller\Documents\Automated Eve\ITP19_Y02_F1_2018-10-03 {projectNum}.eve".format(projectNum=ProjectNum)

或者您可以使用f字符串,该字符串会自动插入变量。

endfile1 = fr"C:\Users\jrwaller\Documents\Automated Eve\ITP19_Y02_F1_2018-10-03 {projectNum}.eve"

答案 1 :(得分:0)

f字符串以.crt开头;您只使用了以f

开头的原始字符串

因此,对于r,请执行以下操作:

endfile1