python能不能代替c_Python替代fscanf C代码

我有一些效果很好的C代码:

#include

#include

int main()

{

FILE *fp;

struct emp

{

char name[40];

int age;

float bs;

};

struct emp e;

fp=fopen("EMPLOYEE.DAT","r");

if(fp==NULL)

{

puts("Cannot open file";

exit(1);

}

while(fscanf(f,"%s %d %f",&e.name,&e.age,&e.bs)!=EOF)

printf("%s %d %f\n",e.name,e.age,e.bs);

fclose(fp);

return 0;

}

EMPLOYEE.DAT中的数据:

Sunil 34 1250.50

Sameer 21 1300.50

rahul 34 1400.50

我在将此代码转换为Python时遇到问题:

while(fscanf(f,"%s %d %f",&e.name,&e.age,&e.bs)!=EOF)

printf("%s %d %f\n",e.name,e.age,e.bs);

有没有办法在Python中实现它?什么是退出()&的Pythonic替代品? EOF?

解决方法:

就像是:

with open("EMPLOYEE.DAT") as f: # open the file for reading

for line in f: # iterate over each line

name, age, bs = line.split() # split it by whitespace

age = int(age) # convert age from string to int

bs = float(bs) # convert bs from string to float

print(name, age, bs)

如果要将数据存储在结构中,可以使用内置字典类型(哈希映射)

person = {'name': name, 'age': age, 'bs': bs}

person['name'] # access data

或者你可以定义自己的类:

class Employee(object):

def __init__(self, name, age, bs):

self.name = name

self.age = age

self.bs = bs

e = Employee(name, age, bs) # create an instance

e.name # access data

编辑

如果文件不存在,这是一个处理错误的版本.并返回退出代码.

import sys

try:

with open("EMPLOYEE.DAT") as f:

for line in f:

name, age, bs = line.split()

age = int(age)

bs = float(bs)

print(name, age, bs)

except IOError:

print("Cannot open file")

sys.exit(1)

标签:python,c-3,python-2-7

来源: https://codeday.me/bug/20190529/1175280.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值