Python 2.7 中的文件模式
File Modes in Python 2.7
我正在尝试制作数据库之类的东西,但我的 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();
1) 如果您使用单个文件句柄(例如:fw 或 fr),请记住当您读取文件时,光标会向下移动到文件中。您必须 'scroll the cursor back' 到顶部(参见 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()
我正在尝试制作数据库之类的东西,但我的 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();
1) 如果您使用单个文件句柄(例如:fw 或 fr),请记住当您读取文件时,光标会向下移动到文件中。您必须 'scroll the cursor back' 到顶部(参见 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()