首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python将整个文件作为一行读取

Python将整个文件作为一行读取
EN

Stack Overflow用户
提问于 2017-11-29 02:09:37
回答 2查看 1.6K关注 0票数 1

我有一个数据文件,如下所示。

代码语言:javascript
复制
Index   Code    Pos1    Strand  Chr2    Pos2    length  blocks
1   G32_bkd.ctx:Vu01(old4)  62739   47+9-   Vu01(old4)  63651   790 0
2   G32_bkd.ctx:Vu01(old4)  441403  10+0-   Vu01(old4)  446263  4893    0
3   G32_bkd.ctx:Vu01(old4)  450546  15+0-   Vu01(old4)  451091  576 0
4   G32_bkd.ctx:Vu01(old4)  459741  10+0-   Vu01(old4)  460841  1068    0
5   G32_bkd.ctx:Vu01(old4)  612262  14+0-   Vu01(old4)  629013  16788   0
6   G32_bkd.ctx:Vu01(old4)  688380  23+0-   Vu01(old4)  693207  4872    0
7   G32_bkd.ctx:Vu01(old4)  730643  12+0-   Vu01(old4)  740497  7011    0
8   G32_bkd.ctx:Vu01(old4)  834116  16+1-   Vu01(old4)  835797  1752    0

我想分开读标题行,然后在for循环中读取每一行。我的代码是

代码语言:javascript
复制
with open(file) as f:
    title_line = f.readline()
    for line in f:
        line = line.strip()
        cols = line.split()

当我在print(line)循环中检查for时,它没有打印任何东西。但是,当我检查print(title_line)时,整个文件是打印出来的,保持文件中的确切格式。哪里出了问题?

注:所以,我只是复制和粘贴整个文件,并以不同的名称保存它,它工作得很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-29 02:52:35

可能导致这种行为的一件事是,如果Python出于某种原因不喜欢原始文件中行字符的末尾。

要确认这一点,您可以在Linux上使用od -t a file | less,并检查其中的内容。也许该文件符合不同的操作系统标准?如果不在Linux上,则可以使用Python本身使用ord打印每个字符,以查看它正在使用什么(\n、\r、\r\n)。

如果是这样的话,你有一些选择:

  • 对于Python 2,可以以通用换行符模式打开文件。即"U":
    • open (file, "U")
    • 这是一种快速而简单的方法来确认这确实是问题所在,并解决它,但长期不推荐。

  • 否则,您可以使用io.open而不是open,并使用它的newline=参数。默认的None应该是您所需要的。

如果这不能解决您的问题,请提供:

  • 你使用的操作系统
  • 您正在使用的Python版本
  • 原始文件的源操作系统。

作为一个无关的附带说明,我建议您检查Python的内置csv模块来读取您的文件。这似乎非常合适( csv模块可以配置为使用空格或制表符,而不是逗号)

参考资料

票数 0
EN

Stack Overflow用户

发布于 2017-11-29 02:21:46

假设您有一个文件'yourfile.txt‘,并且它的大小不是很大。

代码语言:javascript
复制
f = open('yourfile.txt','r')  

跳过读行中的title_line。

代码语言:javascript
复制
for line in f.readlines()[1:]:
    line = line.strip()
    cols = line.split()
    # output the result
    print ",".join(x for x in cols)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47543924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档