我正在尝试使数据库排序,但是我的r +,w +和a +无法正常工作,我必须关闭文件并以不同的方式再次打开以执行每个操作。这是有效的代码,但是当我只用一个文件对象和模式将它们写为r +或w +或rw +或r + w以及r和a的相同组合时,它不会打印。它只是写入文件,但不打印行。
import os;
import sys;
def fileInput(numOfEmployees):
for i in range(numOfEmployees):
empId, empFName, empLName, empSalary, empEmailId = raw_input("Enter employee id: "), raw_input("Enter employee first name: "), raw_input("Enter employee last name: "), raw_input("Enter employee salary: "), raw_input("Enter employee Email ID: ");
string = empId+" "+empFName+" "+empLName+" "+empSalary+" "+empEmailId+"\n";
fw.write(string);
def fileSearch(searchStr, fr):
line = fr.readline();
while line:
empId, empFName, empLName, empSalary, empEmailId = line.split();
if(searchStr == empFName):
print line;
line = fr.readline();
def main():
numOfEmployees = input("Enter the number of employees: ");
fileInput(numOfEmployees);
fw.close();
searchStr = raw_input("Enter the name of the employee you want to search: ");
fr = open(string, "r");
fileSearch(searchStr, fr);
fr.close();
try:
string = os.path.dirname(os.path.realpath(__file__))+"/FileIO.txt";
fw = open(string, "w");
main();
except KeyboardInterrupt:
fr.close();
fw.close();
sys.exit();
答案 0 :(得分:0)
1)如果使用单个文件句柄(例如fw或fr),请记住在读取文件时,光标会向下移动文件。您必须将光标“回滚”到顶部(请参见seek
)
2)'rw'将覆盖先前的文件,并从上次运行中删除先前的条目。使用'a +'
尝试一下:
import os;
import sys;
FileName='FileIO.txt'
def fileInput(fw,numOfEmployees):
for i in range(numOfEmployees):
empId, empFName, empLName, empSalary, empEmailId = raw_input("Enter employee id: "), raw_input("Enter employee first name: "), raw_input("Enter employee last name: "), raw_input("Enter employee salary: "), raw_input("Enter employee Email ID: ");
string = empId+" "+empFName+" "+empLName+" "+empSalary+" "+empEmailId+"\n";
fw.write(string);
def fileSearch(fw, searchStr):
line = fw.readline();
while line:
empId, empFName, empLName, empSalary, empEmailId = line.split();
if(searchStr == empFName):
print line;
line = fw.readline();
def main():
string = os.path.dirname(os.path.realpath(__file__))+'/'+FileName;
try:
fw = open(string, "a+");
except KeyboardInterrupt:
sys.exit()
numOfEmployees = input("Enter the number of employees: ");
fileInput(fw,numOfEmployees);
searchStr = raw_input("Enter the name of the employee you want to search: ");
fw.seek(0)
fileSearch(fw,searchStr);
fw.close();
if __name__ == '__main__':
main()