Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >简单的python脚本。输入和输出不匹配

简单的python脚本。输入和输出不匹配
EN

Stack Overflow用户
提问于 2017-07-04 16:18:42
回答 2查看 81关注 0票数 0

简写:输入和输出文件中的行数不相等。我不明白为什么,因为我没有增加或减少任何行,即输入文件有12327行,但输出只有11903行。

我似乎找不到我的代码中的任何错误。我希望有更多经验的人可以?谢谢。

详细版本:我有一个简单的python脚本,由3个函数组成。

函数1从.txt文件(infile)中获取一个数字列表,将所有数字转换为浮点数,并将所有负数更改为0。然后它将它们添加到一个列表(原始列表)。然后将该列表中的每个元素打印到输出文件中。它还会告诉您输入文件中的行数。

函数2主要检查输出文件中的行数。

函数3只是运行函数1和2。

输入文件有12327行,而输出文件只有11903行。

我制作了另一个输入文件来测试脚本。这个.txt输入文件有10行,其中几行是负数。但是,输出文件是完全空的。

我不明白为什么输入和输出行数是不同的?我已经包含了下面的代码。

如果有任何建议,我将不胜感激。谢谢。

代码语言:javascript
运行
AI代码解释
复制
def thelist():  #FUNCTION 1
    original_list = []
    for line in infile:
        newline = float(line)
        if newline < 0:
            newline = 0
        original_list.append(newline)
    print('The input file has', len(original_list), 'lines.')
    for element in original_list:
        print(element, file = outfile)

def outfilelinenumber():    #FUNCTION 2
    outfile = open('outfile.txt')
    improved_list = []
    for line in outfile:
        improved_list.append(line)
    if not improved_list:
        print('Output file is empty.')
    else:
        print('The output file has', len(improved_list), 'lines.')

def main(): #FUNCTION 3
    thelist()
    outfilelinenumber()
    print('\n', '*** Finished ***')


infile = open('infile.txt')
outfile = open('outfile.txt', 'w')

main()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-04 16:28:37

一个问题是,您从未关闭过输出文件,因此没有任何内容正确地发送到它。您需要注意您的文件:如果您打开它,请正确关闭它。您也不会关闭您的输入文件,尽管您看不到由此可能导致的问题。

将函数替换为

代码语言:javascript
运行
AI代码解释
复制
def thelist():  #FUNCTION 1
    original_list = []
    for line in infile:
        newline = float(line)
        if newline < 0:
            newline = 0
        original_list.append(newline)
    print('The input file has', len(original_list), 'lines.')
    for element in original_list:
        print(element, file = outfile)
    infile.close()
    outfile.close()

注意末尾的两个close函数。在我的测试中,这解决了您的问题,尽管您在文件处理方面确实存在其他可能导致问题的问题。我建议您查看tutorial on file handling以了解更好的文件处理。

票数 2
EN

Stack Overflow用户

发布于 2017-07-04 16:33:43

我可以看到,当第二个方法读取outfile并发现它为空时,有些行还没有完全推送到outfile.txt。这是因为写入操作未完成。正如Rory在之前的回答中所建议的,建议在使用后关闭文件以进行正确的文件处理。即使使用flush()来完成任何挂起的写操作,在这里也会有所帮助。

请使用下面的main()来获得正确的结果。

代码语言:javascript
运行
AI代码解释
复制
 def main(): #FUNCTION 3
    thelist()
    infile.flush()
    outfile.flush()
    outfilelinenumber()
    infile.flush()
    outfile.flush()
    print('\n', '*** Finished ***')

使用此命令,输出为:

代码语言:javascript
运行
AI代码解释
复制
 The input file has 13 lines.
 The output file has 13 lines.

  *** Finished ***
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44910508

复制
相关文章
Python输入和输出
input函数:获取用户输入,保存成一个字符串。重要的话,说两遍,input函数的返回值是一个字符串类型。哪怕你输入的是个数字1,返回给你的只会是字符串“1”,而不是 整数1 。
汤贤
2020/05/18
1.6K0
Python输入和输出
Python中输入和输出[通俗易懂]
格式:result = raw_input(‘提示信息’)
全栈程序员站长
2022/07/01
8420
Python中输入和输出[通俗易懂]
python 重定向输入输出流 脚本
file-like objects that save standard output text in a string and provide
用户5760343
2022/05/13
6680
Python基础 - 输入和输出
Python 提供了 input()从标准输入读入一行文本,默认的标准输入是键盘。
似小陈吖
2023/10/17
1670
Python的输入和输出问题详解
print()会依次打印每个字符串,遇到逗号“,”会输出一个空格,如果你觉得理解的还不够透彻可以去小编的Python技术球球qun:278136312 qun里面有我总结的比较详细的 
py3study
2020/01/21
1.4K0
python的标准输入,输出,错误输出。
    python中的sys模块有标准输入,标准输出,以及标准错误输出的方法。
py3study
2020/01/13
3.7K0
输入输出——简单的回文判断
# 输入输出——简单的回文判断 # 代码 ''' 可以通过使用 seq[a:b] 来从位置 a 开 始到位置 b 结束来对序列进行切片 。我们同样可以提供第三个参数来确定切片的步长 (Step)。默认的步长为 1 ,它会返回一份连续的文本。如果给定一个负数步长,如 -1 , 将返回翻转过的文本。 ''' def reverse(text): return text[::-1] # 使用切片功能返回倒序 def is_palindrome(text): return text ==
benym
2022/07/14
3600
【python】字符串输出和输入
回顾一下以前我们经常写的print()输出数据,输出的就是字符串。下面来看看具体点的代码操作。
python自学网
2022/03/29
8980
【python】字符串输出和输入
Python的输入与输出
在Python中,使用内置函数input()可以接收用户的键盘输入 input()函数的基本用法如下:variable = input() 参数说明如下: variable:为保存输入结果的变量 双括号内的文字用于提示要输入的内容 实例:接收用户输入的结果并保存到demo变量中
hacker707
2023/04/17
5880
Python的输入与输出
文件的输入和输出
【注:以默认模式打开文件(即上述方式)进行输出将自动把文件的长度截短为零,这相当于删除已有的内容。具体原因见本文第三节文件模式中的注】
艰默
2023/02/26
1.6K0
文件的输入和输出
Python输入输出
一.转义符 #1. 基础 name = input() print(name) print("xxx" * 5) #2. 输出 print("\txxx") #\t制表符,\n空格 print(name.replace('原','新')) #将旧字符替换为新字符 print("Our cat %s weighs %s pounds" % (cat, weight)) print(r"asda\sda") #原始字符,显示\等转义 print("""asdasda #多行输出 asdad asd sadasd
陈不成i
2021/06/21
1.3K0
python 变量,输入,输出
2.0 注释 python的注释方法 """ 多行注释 """ #单行注释 2.1 变量 问:为什么要有变量? 为某个值创建一个“外号”,以后在使用时候通过此外号就可以直接调用。 创建一个变量 name = "gkf" #name是变量名 等号就是声明(或赋值) "gkf"是变量的值 age = 18 #age是标量名 等号就是声明(或赋值) 18是变量的值 2.2 变量名命名规范 可以使用字母数字下滑线组合 如: name ="gkf" num_1 = 318 或 _ho
py3study
2020/01/15
2.4K0
python 变量,输入,输出
java 输入和输出
1.输出 System.out.println(); //输出且换行 System.out.print(); //输出且不换行 System.out.printf(); // 格式化输出 2.输入 import java.util.Scanner //导入包 public class HelloWorld{ public static void main(String[] args){ Scanner scanner =new Scanner(System.in); //
小小咸鱼YwY
2020/06/19
2.5K0
python输入与输出
%表示格式化操作,% 前面的字符串中的%s(格式符) 使用 % 后面的字符串 'abc' 替换。
py3study
2020/01/09
1.4K0
Python unittest 测试输入(input)和输出(print)
测试输入输出的解决方法是: 将标准输入输出定向到一个StringIO类(python3是 io.StringIO)。
饶文津
2020/05/31
1.8K0
python基础教程:输入和输出(IO)
计算机编程中,会经常涉及输入输出(IO,输入/输出)。提供IO功能的设备就是输入输出设备,比如,键盘,鼠标就是典型的输入设备,显示器就是典型的输出设备。程序在运行过程中,数据存储在内存中,但有时候它需要用户通过输入设备把数据(比如,密码)传递给程序;也有时候,程序需要把运行的结果数据输出给用户,这可能是打印到显示器,也可能是写到磁盘文件中。
一墨编程学习
2019/05/15
9000
java的输入和输出语句_c++输入输出语句
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/193213.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
1.3K0
java的输入和输出语句_c++输入输出语句
python输入输出及编码和注释
# 1.py # # 对应python中文编码问题如下加上 #coding=utf-8 或者 # -*- coding: utf-8 -*- #coding=utf-8 # 对于python的注释有两种 # 一个是用 # 注释 一个是多行注释用 ''' ''' 下面有例子 ''' 这里是多行注释 ''' # 打印一个hello world # 注意文件一定要是utf8 无bom编码 不然会执行报异常的错误 异常错误如下:SyntaxError: Non-ASCII character '\xe6' in file 1.py on line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details print 'hello world' # print 多个字符串用,号隔开,输出的时候用的空格隔开,如果不用,隔开,则输出的字符串是相连的 print 'this is a boy','jump','the lazy dog' print 'i am' 'boy' # 从命令行输入数据 test = raw_input() print '这里是打印输入结果:', test ''' 下面是这个是运行结果: hello world this is a boy jump the lazy dog i amboy 5 这里是打印输入结果: 5 '''
公众号-利志分享
2022/04/25
4570
__int 128 的输入和输出
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
用户2965768
2019/09/25
1.1K0
python标准输入输出
sys.stdin与可读文件对象具有相同的类型,sys.stdout与可写文件对象具有相同的类型
py3study
2020/01/08
8710

相似问题

输入和输出数组不匹配

20

fsolve -输入和输出不匹配

10

Python案例匹配输入和输出

22

Python 3中相同输入的列表和字典输出不匹配

10

输出与输入不匹配

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档