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

复制
相关文章
[Silverlight动画]转向行为 - 路径跟随
路径跟随这名字一听就知道要干嘛了:机车会沿着一个预定的路线行驶。虽然在地图或者游戏中,路径是以图形的形式被表示的,而在转向行为中,其不过是一系列航点。 其策略真是简单到不行。只要从第一个航点开始挨个寻找下去即可。 private int _pathIndex = 0; private double _pathThreshold = 20; public void followPath(List<Vector2D> path,bool loop) {
用户1172164
2018/01/16
9820
Java 查找 List 中的最大值、最小值Java 查找 List 中的最大值、最小值
Java 查找 List 中的最大值、最小值 java> List<Long> list = new ArrayList(); java.util.List<java.lang.Long> list = [] java> list.add(1L) java.lang.Boolean res1 = true java> list.add(2L) java.lang.Boolean res2 = true java> Collections.max(list) java.lang.Long res3 = 2 j
一个会写诗的程序员
2018/08/17
3.9K0
Excel公式技巧54: 在多个工作表中查找最大值/最小值
要在Excel工作表中获取最大值或最小值,我们马上就会想到使用MAX/MIN函数。例如,下图1所示的工作表,使用公式:
fanjy
2020/09/17
11.9K0
Excel公式技巧54: 在多个工作表中查找最大值/最小值
较快速在一个数组中查找最大值和最小值
#include<stdio.h> #define MAX 100001 int a[MAX]; int n; /* 时间复杂度为3*n/2 */ void swap(int i) { if(i==n-1) return ; if(a[i]>a[i+1]) { int temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } } void sort() { int i; for(i=0;i<n;i++) { swap(i); i++; }
chain
2018/08/02
3.7K0
多个必经边的最短路径
问题: 多个必经边、必经点的约束 S 到 E 的最短加权路径: [0, 2, 4, 5, 6, 7, 8, 14, 13, 12, 16, 17] S 到 E 的最短加权路径长度: 13
裴来凡
2022/05/29
3370
多个必经边的最短路径
ArangoDB Restful API
ArangoDB 除了提供 Web 和 shell 接口来管理数据库之外,还可以使用 Restful API 的方式来管理数据库。
kongxx
2020/02/18
1.1K0
【详解】图数据库 | 灵活存储复杂关联关系
从事10年JAVA研发工作,架构经验丰富,目前担任京东物流逆向创新业务团队leader,负责京东国际化逆向物流相关研发工作。
京东技术
2018/07/30
4.2K0
【详解】图数据库 | 灵活存储复杂关联关系
ArangoDB安装
ArangoDB的安装还是挺简单的,官方给了各个平台的安装包,下面是在CentOS8上面安装的步骤。
kongxx
2020/02/18
9160
较快速在一个数组中查找最大值和最小值(2)
/*分治法*/ #include<iostream> #include<string> #include<vector> #include<fstream> using namespace std; int a[16]={1,3,5,7,9,11,14,2,4,6,8,10,12,14,16,18}; int b[9]={3,1,5,9,4,2,7,6,10}; int t[2]; vector<string> splitEx(const string& src, string separate_chara
chain
2018/08/02
2.6K0
路径查找器AI
问题源于我想建立一个游戏AI,它要能够定义一条从起点到终点的路径,同时避开路上的墙壁障碍物。为此,我写了一个C#库(path.dll),它允许定义一个二维空间(MAXX,MAXY),并为这个空间设立一些矩形的“墙“。在添加完所有的墙后,path类将计算能够绕过墙的AI所有“可见”的AI节点(可见指节点之间没有墙)之间是连接的。这个类实现了一个路径查找算法,使用C#的Delegates(委托)与AI节点实例进行通信。最后,使用这个O_O算法(扩展欧几里得算法)将会得到一个子类,它是所节点的下一个目的AI节点的集合。在示例图中,可以看到墙(橙色),AI NODES(红色),起点(蓝色)和终点(蓝色)。
东心木水
2018/01/29
1.4K0
路径查找器AI
在Python中实现线性查找
线性查找算法是最简单的查找算法之一。线性查找算法的输入是一个数组或列表和项,该算法查找数组中是否存在该项。如果找到该项,则返回其索引;否则,可以返回null或你认为在数组中不存在的任何其他值。
fanjy
2022/11/16
3.2K0
在Python中实现线性查找
ArangoDB集合操作
通常我们可以通过 ArangoDB 提供的 Web 接口来对 ArangoDB 进行监控和管理。但今天来看看怎样通过 arangosh 的方式来对数据库进行操作。
kongxx
2020/02/18
1K0
ArangoDB文档操作
通过ArangoDB提供的shell终端,我们可以执行很多文档集合操作,下面就看看一些常用的方法。
kongxx
2020/02/18
9060
经典算法题-矩阵中查找单词路径数
1.问题描述 Problem Statement 问题陈述 You are given a String[] grid representing a rectangular grid of letters. You are also given a String find, a word you are to find within the grid. The starting point may be anywhere in the grid. The path may move up, down, l
cwl_java
2020/03/19
1.1K0
关于在vim中的查找和替换
在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。
休辞醉倒
2019/07/25
26.1K0
禁止点或禁止边的最短路径
问题: 禁止点或禁止边的约束 S 到 E 的最短加权路径: [0, 3, 6, 12, 16, 17] S 到 E 的最短加权路径长度: 7
裴来凡
2022/05/29
1K0
禁止点或禁止边的最短路径
使用Visual Studio 部署SharePoint时提示“路径中具有非法字符”
在使用VS 2012部署或发布SharePoint时,提示“路径中具有非法字符”(英文提示“Illegal characters in path”),找了半天,才找到答案。
雪雁-心莱科技
2018/12/27
1.9K0
【剑指offer:在排序数组中查找数字】搜索左右边界:从两边向中间、二分查找
二分查找一般用来查找数字在有序数组中是否出现过。进一步想,它可以用来不断在子序列中搜索对应数字。所以,我们就可以用它来向左边子序列中不断搜索,确认左边界;同样的思路,确认右边界。
心谭博客
2020/04/21
1.5K0
Mysql.ini 路径查找
Windows环境经常在常规路径下找不到Mysql.ini的配置文件,实在是很恶心。我们需要通过一下步骤来查找。
收心
2022/01/14
3.3K0
Mysql.ini 路径查找
TextBind:在开放世界中多轮交织的多模态指令跟随
拥有指令跟随能力的大型语言模型已经彻底改变了人工智能领域。这些模型通过其自然语言界面展现出卓越的通用性,能够应对各种现实世界任务。
zenRRan
2023/09/21
4160
TextBind:在开放世界中多轮交织的多模态指令跟随

相似问题

ArangoDb得到具有性质的边

11

Arangodb查找条件最短路径

132

在ArangoDB中查找具有非唯一属性的文档

23

ArangoDB-重复边

22

如何在路径中查找边

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文