我正在做一个项目,用户在其中输入详细信息并将其保存到文件中。我让他们输入了年龄,但我希望它能自动计算当时的年龄。
我想要的另一个功能是让文件名不同。例如1.dat
,则下一个输入将是2.dat
。
这是到目前为止的代码:
import os
from time import gmtime, strftime
first_name= raw_input("Type your first name... ")
second_name= raw_input("Type your second name... ")
age= raw_input("Type your age... ")
yearofbirth= raw_input("Type the year you were born... ")
birthyear=yearofbirth
os.system('mkdir Data')
savefile=open('Data/data.dat','w')
savefile.write('Firstname: '+first_name+'\n')
savefile.write('Secondname: '+second_name+'\n')
savefile.write('Age: '+age+'\n')
savefile.write('Year Of Birth: '+yearofbirth+'\n')
savefile.close()
print('Saved')
first_name=None
second_name=None
age=None
yearofbirth=None
int(float(birthyear))
adage=strftime("%Y")
agey = yearofbirth - adage
openfile=open('Data/data.dat','r')
name=openfile.read().split()
first_name=name[1]
second_name=name[3]
age=name[5]
yearofbirth=name[9]
print first_name+" "+second_name+" "+age+" "+yearofbirth
print agey
答案 0 :(得分:0)
根据age
计算yearofbirth
:
from datetime import datetime
def time_since(year):
datetime.now().year - year
请注意,您可能会错过1年的实际年龄,因为您没有考虑数月和数天。
允许将多个配置文件保存到多个文件中:
def save_profile(filename):
# here goes everything from the first `raw_input()` to file `close()`
# use `open(filename, 'w')` instead of `open('data.dat', 'w')
def save_multiple_profiles(number):
for n in range(number):
save_profile(number + '.dat')
答案 1 :(得分:0)
问题有点模糊。您提到的一个问题是想知道如何为每个文件分配新文件名。为此,您必须知道现有文件的名称。有很多方法可以做到这一点。这是一种方法
def find_next_file_number():
existing = glob.glob(work_dir +'\\' + 'data_*')
numbers = [int(file_name.split('_')[-1].split('.')[0]) for file_name in existing()
numbers.sort()
return str(numbers[-1] + 1)
上述函数假设您的数据文件以data_INTEGER.txt
的形式存储如果您愿意做
之类的事情,请使用new_file_num = find_next_file_number()
new_file_name = 'data_' + new_file_num + '.txt'
outref = open(work_dir +'\\' + new_file_name,'w')