Python 在一行上显示文件中的整数

Python 在一行上显示文件中的整数,python,python-3.x,Python,Python 3.x,我有一个非常简单的任务,创建一个包含8个1-100之间的随机整数的文本文件,读取文件,在同一行上显示数字,计算偶数整数和奇数整数,然后显示它们 我遇到的问题是让字符串显示在同一行上。我已经浏览了多篇关于类似问题的文章,但都无济于事。我尝试使用.join,但是,当我包含它时,它似乎破坏了代码 #导入随机和时间 随机输入 导入时间 #定义主函数 def main(): #打开文件“mynumbers”,如果不存在,则创建它 myfile=open('mynumbers.txt','w') #语句以正

我有一个非常简单的任务,创建一个包含8个1-100之间的随机整数的文本文件,读取文件,在同一行上显示数字,计算偶数整数和奇数整数,然后显示它们

我遇到的问题是让字符串显示在同一行上。我已经浏览了多篇关于类似问题的文章,但都无济于事。我尝试使用.join,但是,当我包含它时,它似乎破坏了代码

#导入随机和时间
随机输入
导入时间
#定义主函数
def main():
#打开文件“mynumbers”,如果不存在,则创建它
myfile=open('mynumbers.txt','w')
#语句以正确的格式将整数写入文本文件
对于范围(8)内的计数:
number=random.randint(1100)
myfile.write(str(number)+'\n')
#定义读取函数
def read():
#打开在主函数中创建的“mynumbers”文件
myfile=open('mynumbers.txt','r')
#将内容变量设置为打开的文件的内容
content=myfile.read()
#打印内容变量并从字符串中删除\n
stripit=content.rstrip('\n')
打印(条纹打印)
#调用函数、创建的打印和睡眠调用
main()
打印('已创建文件!')
时间。睡眠(1)
读()
时间。睡眠(5)

如能提供任何帮助,我们将不胜感激

代码看起来不错,但在read()函数上执行此操作

def read():
     my_numbers = []
     with open('mynumbers.txt', 'r') as infile:
          for line in infile:
               line = line.strip()
               my_numbers.append(line)
     print (' '.join(line))

写文件时不要添加换行符。只需使用空格(或逗号,随便什么)


read
函数将整个文件内容读入一个字符串。您对该字符串的
rstrip
调用将从中删除最后一个换行符,但不会删除任何内部换行符。您无法有效地使用
str.join
,因为您只有一个字符串

我认为有两个合理的解决办法。第一种方法是只保留单个字符串,但将所有内部换行符替换为空格:

def read():
    myfile = open('mynumbers.txt', 'r')
    content = myfile.read()
    stripit = content.rstrip('\n')
    nonewlines = stripit.replace('\n', ' ')
    print(nonewlines)
另一种方法是将单个字符串拆分为一个单独的字符串列表,每个数字对应一个字符串。如果我们以后需要用它们做不同的事情,这会更有用。当然,我们要做的就是使用
join
将它们重新组合在一起:

def read():
    myfile = open('mynumbers.txt', 'r')
    content = myfile.read()
    content_list = content.split() # by default, splits on any kind of whitespace
    rejoined_content = " ".join(content_list)
    print(rejoined_content)

我会这样做,尤其是因为你提到了接下来需要做的奇偶部分。在第一个循环的末尾,您将有一个int(而不是str)列表,您可以使用这些int来确定它们是偶数还是奇数

def read():
     my_nums = []
     with open('mynumbers.txt', 'r') as f:
          for line in f:
               num_on_line = int(line.strip())
               my_nums += [num_on_line]
               print num_on_line, #don't forget that comma
     for num in my_nums:
          #display the even and odds

你可以用这种方式把数字打印在一行上

with open('mynumbers.txt', 'r') as numbers_file:
    for line in numbers_file:
        print(line.strip(), end=" ")

line.strip()
用于消除
\n
字符。

虽然我同意这是一种解决方案,但此程序的要点是将\n行转换为单行,因此它不适用于此场景。非常感谢!第一个正是我想要的。谢谢大家的快速回复!
with open('mynumbers.txt', 'r') as numbers_file:
    for line in numbers_file:
        print(line.strip(), end=" ")