【问题标题】:Write text to file line by line [duplicate]逐行将文本写入文件[重复]
【发布时间】:2016-11-07 20:36:25
【问题描述】:

我正在尝试将一些文本写入文件,这就是我尝试过的:

text = "Lorem Ipsum is simply dummy text of the printing and typesetting " \
                  "industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s," \
                  " when an unknown printer took a galley of type and scrambled it to make a type specimen book."
target = open("file", 'wb')
target.writelines(text)

我得到一个空文件。 我该怎么做?

【问题讨论】:

  • 你是不是忘了.close()这个文件?
  • 另外,你的文字只有一行。
  • target.close() 将保存它。
  • 我已经写了如何打印到文本文件,以及如何在代码中正确使用它。希望这会有所帮助。

标签: python file


【解决方案1】:

这是打印到 txt 文件的方法:

file = open("Exported.txt", "w")
file.write("Text to write to file")
file.close() #This close() is important

另一种方法是:

with open('Exported.txt', 'w') as file:
   file.write("Text to write to file")

这是我写的一个txt文件的程序:

import os.path

def start():

    print("What do you want to do?")
    print("    Type a to write a file")
    print("    Type b to read a file")
    choice = input("            -")
    if choice == "a":
        create()
    elif choice == "b":
        read()
    else:
        print("Incorrect spelling of a or b\n\n")
        start()


def create():

    print()
    filename = input("What do you want the file to be called?\n")
    if os.path.isfile(filename):
        print("This file already exists")
        print("Are you sure you would like to overwrite?")
        overwrite = input("y or n")
        if overwrite == "y":
            print("File has been overwritten")
            write(filename)
        else:
            print("I will restart the program for you")
    elif not os.path.isfile(filename):
        print("The file has not yet been created")
        write(filename)
    else:
        print("Error")





def write(filename):
    print()
    print("What would you like the word to end writing to be?")
    keyword = input()
    print("What would you like in your file?")
    text = ""
    filename = open(filename, 'w')
    while text != keyword:
        filename.write(text)
        filename.write("\n")
        text = input()


def read():
    print()
    print("You are now in the reading area")
    filename = input("Please enter your file name:     -")
    if os.path.isfile(filename):
        filename = open(filename, 'r')
        print(filename.read())
    elif not os.path.isfile(filename):
        print("The file does not exist\n\n")
        start()
    else:
        print("Error")


start()

【讨论】:

  • @Ashref 如果我的代码有帮助,请投票,如果它回答了您的问题,请按绿色勾号将其标记为答案。然后其他有同样问题的人也可以找到这个答案来帮助他们解决问题。谢谢! PS。我也确保支持你的问题:)
【解决方案2】:

writelines 需要一个可迭代的(例如一个列表)行,所以不要使用它。并且您需要关闭文件以保存更改,最好使用with 语句完成:

with open("file", 'wb') as target:
    target.write(text)

【讨论】:

  • 是的,问题出在关闭上,我也将 writelines 改为 write,它工作正常。
【解决方案3】:

您提供的代码会生成一个名为 file 的文件,其中包含所需的行。也许您打算将其保存为“file.txt”。此外,'wb' 标志中的'b' 告诉代码以二进制模式写入文件(更多信息here)。如果您希望文件可读,请尝试使用'w'

最后,访问文件时最好使用with 语句

text ="Lorem Ipsum is simply dummy text of the printing and typesetting " \
              "industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s," \
              " when an unknown printer took a galley of type and scrambled it to make a type specimen book."
with open("file.txt", 'w') as f:
    f.write(text)

【讨论】:

    【解决方案4】:

    这样你应该直接关闭文件:

    target = open("filename.txt", 'w')
    target.writelines(text)
    target.close()
    

    通过这种方式,文件在with完成执行后的缩进块后关闭:

    with open("filename.txt", "w") as fh:
        fh.write(text)
    

    请参阅here 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-11
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多