繁体   English   中英

使用txt文件作为python的输入

[英]using txt file as input for python

我有一个python程序,要求用户将文本粘贴到它以处理各种任务。 像这样:

line =(输入(“在此处粘贴文本:”))。lower()

粘贴的文本来自.txt文件。 为避免代码出现任何问题(因为文本包含多个引号),用户必须执行以下操作:键入3个引号,粘贴文本并再次键入3个引号。

通过让python读取.txt可以避免上述所有问题吗? 如果是的话,怎么样?

如果问题有意义,请告诉我。

您可以使用以下内容:

with open("file.txt") as fl:
    file_contents = [x.rstrip() for x in fl]

这将导致变量file_contents成为一个列表,其中列表的每个元素都是文件的一行,并且末尾的换行符被剥离。

如果要迭代文件的每一行,可以执行以下操作:

with open("file.txt") as fl:
    for line in fl:
        # Do something

rstrip()方法删除了字符串末尾的空格,它对于删除换行符很有用。

在Python2中,只需使用raw_input以字符串形式接收输入。 用户不需要额外的引号。

line=(raw_input("Paste text here: ")).lower()

请注意, 输入相当于

eval(raw_input(prompt))

并且将eval应用于用户输入是危险的,因为它允许用户评估任意Python表达式。 恶意用户可以删除文件甚至运行任意函数,所以永远不要在Python2中使用input

在Python3中, input行为类似于raw_input ,所以你的代码就可以了。

相反,如果您希望用户键入文件的名称,那么

filename = raw_input("Text filename: ")
with open(filename, 'r') as f:
    line = f.read()

故障排除:

啊,我正在使用Python3。 r模式下打开文件时,Python会尝试将文件中的bytes解码为str 如果未指定编码,则使用locale.getpreferredencoding(False)作为默认编码。 显然,这不是您的文件的正确编码。 如果您知道文件使用的编码,最好为其提供encoding参数:

open(filename, 'r', encoding=...)

或者,一种不太令人满意的hackish方法是忽略解码错误:

open(filename, 'r', errors='ignore')

第三种选择是将文件作为字节读取:

open(filename, 'rb')

当然,这有一个明显的缺点,那就是你要处理像\\x9d这样的字节而不是像·这样的字符。

最后,如果您想要帮助猜测文件的正确编码,请运行

with open(filename, 'rb') as f:
    contents = f.read()
    print(repr(contents))

并发布输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM