Файловые режимы в Python 2.7 - PullRequest
0 голосов
/ 02 декабря 2018

Я пытаюсь сделать что-то вроде базы данных, но мои 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 Ответ

0 голосов
/ 02 декабря 2018

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...