python能不能代替c_Python替代fscanf C代码
我有一些效果很好的C代码:#include#includeint 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
我有一些效果很好的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
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐


所有评论(0)