python2.7中的文件模式

2024-09-28 23:40:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做一个数据库之类的东西,但我的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();

Tags: 文件closeinputstringrawosdefline
1条回答
网友
1楼 · 发布于 2024-09-28 23:40:02

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()

相关问题 更多 >