【问题标题】:Writeline doesn't write to 3rd and 4th linesWriteline 不写入第 3 行和第 4 行
【发布时间】:2021-01-12 01:02:05
【问题描述】:

奇怪的是,即使这些是相同的代码,第 3 行和第 4 行写在 txt 文件的第 5 行。

代码如下:

def save():
    with open("save.txt", "w") as f:
        f.writelines([filename1, "\n"+filename2, "\n"+filename3, "\n"+filename4, "\n"+filename5+"\n"])

当所有电影名都是“a”时

输出是:

a
a


a

当只有 filename3 是“a”时

输出是:





a

我用这段代码取文件名

filename3 = filedialog.askopenfilename()

这里是相关代码

filename1 = ""
filename2 = ""
filename3 = ""
filename4 = ""
filename5 = ""

def uploadFile3(fname):
    global filename3
    filename3 = filedialog.askopenfilename()
    fname.config(text=filename3)

def save():
    with open("save.txt", "w") as f:
        f.writelines([filename1, "\n"+filename2, "\n"+filename3, "\n"+filename4, "\n"+filename5+"\n"])

buttonc = tk.Button(window, text="Add File", command= lambda: uploadFile3(program3)).pack()
program3 = Label(window, text=filename3)
program3.pack()

buttonaa = Button(window, text="Save", command=save)

这些现在是硬编码的,有5个函数名为uploadFile1,uploadFile2等等。

感谢您的回答

【问题讨论】:

  • 你能粘贴所有相关代码吗
  • 当然,我编辑了帖子
  • 还是避开3和4
  • 我很确定问题出在您在输出中嵌入 \n 的方式上。

标签: python tkinter file-handling


【解决方案1】:

当您觉得需要对变量进行编号时,不要这样做。使用列表,例如:

filename = ["","","","",""]

filename[0] - filename[4] 访问。

然后用换行符连接所有字符串。使用重定向到文件的print 也会为最后一行提供最后的换行符:

filename=['a','b','c','','d']
with open('save.txt','w') as f:
    print('\n'.join(filename),file=f)

【讨论】:

    【解决方案2】:
    filename1 = "a"
    filename2 = "b"
    filename3 = "c"
    filename4 = "d"
    filename5 = "e"
    
    
    
    def save():
        with open("save.txt", "w") as f:
            f.writelines([filename1, "\n"+filename2, "\n"+filename3, "\n"+filename4, "\n"+filename5+"\n"])
    

    我得到以下输出。

    
    a
    b
    c
    d
    e
    

    你的保存功能正常

    【讨论】:

    • 它确实有效,所以问题是上传功能......
    【解决方案3】:

    这是基于您的代码 sn-ps 的替代方案:

    def save(lines):
        with open('save.txt', 'w') as f:
            f.writelines('\n'.join(lines))
    

    然后您可以简单地将save() 称为:

    save([filename1, filename2, filename3, filename4, filename5])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多