python - 如何使用 python 读取和打印整个 .txt 文件?

标签 python eclipse eclipse-plugin pycharm pydev

我对 python 完全陌生,我应该编写一个可以读取整个 .txt 文件并打印它的程序。该文件是一篇用我的母语(挪威语)写的文章,而且很长。我有三个版本应该做同样的事情,但都出错了。我已经在安装了 PyDev 的 bot PyCharm 和 eclipse 中尝试过,并且我在两者上都遇到了相同的错误...

from sys import argv

import pip._vendor.distlib.compat

script, dev = argv

txt = open(dev)

print("Here's your file %r:" % dev)
print(txt.read())


print("Type the filename again:")h
file_again = pip._vendor.distlib.compat.raw_input("> ")

txt_again = open(file_again)

print(txt_again.read())

但这会出现错误:

Traceback (most recent call last):
File "/Users/vebjornbergaplass/Documents/Python eclipse/oblig1/src/1A/1A.py", line 5, in <module>
script, dev = argv
ValueError: not enough values to unpack (expected 2, got 1)

再说一次,我是Python新手,我到处搜索,但没有找到解决方案。

我的下一次尝试是这样的:

# -*- coding: utf-8 -*-

import sys, traceback

fr = open('dev.txt', 'r')
text = fr.read()
print(text)

但这会出现这些错误:

Traceback (most recent call last):
    File "/Users/vebjornbergaplass/Documents/Python eclipse/oblig1/src/1A/v2.py", line 6, in <module>
        text = fr.read()

  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 26: ordinal not in range(128)

我不明白为什么我不工作。

我的第三次尝试如下所示:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
parser = argparse.ArgumentParser()

parser.add_argument("dev.txt", help="dev.txt")
args = parser.parse_args()
if args.filename:
    with open('dev.txt') as f:
        for line in f:
            name, _ = line.strip().split('\t')
            print(name)

这会出现错误:

usage: v3.py [-h] dev.txt
v3.py: error: the following arguments are required: dev.txt

欢迎任何有关这些不起作用的原因的帮助。 预先感谢您:D

最佳答案

由于第二种方法是最简单的,我会坚持使用。

您将 dev.txt 的内容指定为挪威语,这意味着它将包含非 ASCII 字符,例如 Æ,Ø,Å 等。Python 解释器试图告诉你这一点:

UnicodeDecodeError: 'ascii' 编解码器无法解码位置 26 中的字节 0xc3:序号不在范围 (128) 它无法解释该字节 0xC3 = 195(十进制) 作为 ascii 字符,其范围仅限于 128 个不同的字符。

我假设您使用 UTF-8 作为编码,但如果没有,请更改第 2 行中的参数。

# -*- coding: utf-8 -*-

fr = open('dev.txt', 'r', encoding='utf-8')
text = fr.read()
print(text)

如果您不知道自己的编码,可以通过编辑器或 use python to guess it 找到它.

当您的终端未配置为打印 Unicode 字符或正确映射它们时,也可能会导致错误。您可能想看看this question and its answers.

<小时/>

操作文件后,建议将其关闭。您可以通过 fr.close() 手动执行此操作,也可以让 python 自动执行此操作:

with open('dev.txt', 'r', encoding='utf-8') as fr:
    # automatically closes fr when leaving this code-block

关于python - 如何使用 python 读取和打印整个 .txt 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42024878/

相关文章:

python - 我可以打包 cpython 吗?

java - 动态Web元素不读取CSS

java - 接口(interface) OnClickListener 无法使用我的 onClick 方法?

eclipse-plugin - 在eclipse插件中右键单击项目/文件/其他时如何获取项目

python - numpy 中是否有等效的 Matlab 点函数?

javascript - 使用从 Django 中的某个 URL 获取的附加文件预填写表单

python - 重复列表中的每个元素任意次

Mac OS X 中的 Eclipse Tomcat 错误

java - 如何将编辑器模板放入 Eclipse 插件中?

Eclipse 仅在共享文件中搜索