当前位置: 首页 > 面试题库 >

For循环无法在同一文件描述符上运行两次

常俊侠
2023-03-14
问题内容

代码未进入第二个for循环。我没有在任何地方修改文件描述符。为什么会这样呢?

import os
import re

path = '/home/ajay/Desktop/practice/ajay.txt'
os.system('ifconfig>>path')
fd = open(path,'r+')
interfaces = []
tx_packets = []

for line in fd:

    if(re.search(r'(\w+)\s+\Link',line)):
    inter = re.match(r'(\w+)\s+\Link',line)
    interface = inter.group(1)
    interfaces.append(interface)

for lines in fd:

    if(re.search(r'\s+TX packets:(\d+)',lines)):
        tx_packs = re.match(r'\s+TX packets:(\d+)',lines)
        tx_pack = tx_packs.group(1)
        tx_packets.append(tx_pack)


print interfaces
print  tx_packets

问题答案:

因为for lines in fd:它将读取指针,文件指针或它所调用的任何内容放在文件末尾。fd.seek(0)for循环之间调用



 类似资料:
  • 问题内容: 使用posix的read()write()linux调用,可以确保如果我以串行方式通过一个文件描述符进行写入并通过另一个文件描述符进行读取,以使两个动作彼此互斥…读取文件描述符将始终看到写入文件描述符最后写入的内容? 我相信是这种情况,但我想确定一下,手册页对此没有太大帮助 问题答案: 这取决于您在哪里获得了两个文件描述符。如果它们来自dup(2)调用,则它们共享文件的偏移量和状态,因

  • 文件描述符 Linux很重要的设计思想就是一切皆文件,网络是文件,键盘等外设也是文件,很神奇吧?于是所有资源都有了统一的接口,开发者可以像写文件那样通过网络传输数据,我们也可以通过/proc/的文件看到进程的资源使用情况。 内核给每个访问的文件分配了文件描述符(File Descriptor),它本质是一个非负整数,在打开或新建文件时返回,以后读写文件都要通过这个文件描述符了。 应用 我们想想操作

  • 文件描述符接口 函数 int  fd_new (void)   分配文件描述符   struct dfs_fd *  fd_get (int fd)   获取文件描述结构   void  fd_put (struct dfs_fd *fd)   放置文件描述符   int  fd_is_open (const char *pathname)   判断文件是否已被打开   int  select (

  • 问题内容: 有没有办法在原始文件描述符而不是FILE *上执行ftell()的操作(返回文件中的当前位置)?我认为应该有,因为您可以使用lseek()查找原始文件描述符。 我知道我可以使用fdopen()创建与文件描述符相对应的FILE *,但我宁愿不这样做。 问题答案: 只需使用:

  • 问题内容: 我有一个关于在Python 3中使用循环在同一行上打印的问题。我搜索了答案,但找不到任何相关内容。 所以,我有这样的事情: 当用户键入“短句”时,该功能应该对其进行处理,并应将其打印在同一行上。假设该函数在每个单词的末尾添加了“ t”,因此输出应为 但是,目前的输出是: 如何轻松在同一行上打印结果?还是我应该做一个新的字符串 它被迭代,最后我打印出来? 问题答案: 在函数中使用参数 还

  • 问题内容: 我的Maven POM文件遇到问题,无法找到火花依赖关系,并返回错误:无法读取org.apache.spark:spark-streaming- kafka_2.10:jar:1.2.1的工件描述符 我已经确认这对任何公司防火墙都不是问题,因为其他所有依赖项都已正确加载,仅此一项。 我还能够在我的Maven设置中确认它正在尝试从以下存储库中提取。我尝试删除本地计算机上的.m2存储库以重