Сборка .csv на основе пользовательского ввода - PullRequest
0 голосов
/ 04 мая 2019

Мне нужно добавить в файл .csv на основе ввода пользователя.Другие части кода добавляют к файлу, но я не могу понять, как заставить его добавить пользовательский ввод.Я новичок в Python и вообще в кодировании.

У меня есть другие части кода, которые могут объединять или извлекать данные из базы данных .csv и записывать их в отдельный файл, но не могу понять, какчтобы заставить его принимать несколько пользовательских входов для записи или добавления в исходящий файл.

def manualentry():
        stock = input("Enter Stock #: ") #Generate data for each column to fill in to the output file.
        VIN = input("Enter Full VIN: ") #Each line asks the user to add data do the line.
        make = input("Enter Make: ")
        model = input("Enter Model: ")
        year = input("Enter Year: ")
        l8v = input("Enter L8V: ")
        print(stock, VIN, make, model, year, l8v) #Prints the line of user data
        input4 = input("Append to inventory list? Y/N") #Asks user to append the data to the output file.
        if input4 == "Y" or input4 == "y":
            with open('INV.csv','a', newline='') as outfile: #Pull up a seperate csv to write to, an output for collected data
                w = csv.writer(outfile) #Need to write the user input to the .csv file.
                w.writerow([stock, VIN, make, model, year, l8v]) #<-This is the portion that seems to fall apart.
                print("INVENTORY UPDATED")
                starter() #Restarts whole program from begining.
        if input4 == "N" or input4 == "n":
            print("SKIPPING. RESTARTING....")            
            starter() #Reset
        else:
            print("Invalid entry restarting program.")
            starter() #Reset
starter() #R E S E T !

Просто нужно, чтобы пользовательские входы были применены к .csv и сохранены там.Более ранние части кода прекрасно работают, за исключением того, что они добавляются в файл .csv.Это заполнение недостающих данных, которые иначе не были бы перечислены в отдельной базе данных.

Ответы [ 3 ]

0 голосов
/ 04 мая 2019

Вы можете просто использовать пользовательский ввод, управляемый в то время как цикл, чтобы рекурсивно получить пользовательский ввод, а затем вы можете выйти в зависимости от выбора пользователя

user_input = 'Y'
while user_input.lower() == 'y':
    # Run your code here
    user_input = input('Do you want to add one more entry: Enter [Y/N]')
0 голосов
/ 04 мая 2019

Попробуйте это

import csv


def boo():
   stock = input("Enter Stock #: ")  # Generate data for each column to fill in  to the output file.
   VIN = input("Enter Full VIN: ")  # Each line asks the user to add data do the line.
   make = input("Enter Make: ")
   model = input("Enter Model: ")
   year = input("Enter Year: ")
   l8v = input("Enter L8V: ")
   print(stock, VIN, make, model, year, l8v)  # Prints the line of user data

   input4 = input(
    "Append to inventory list? Y/N  || anything else to exit")  # Asks user to append the data to the output file.

   if input4 == "Y" or input4 == "y":
       with open('INV.csv', 'a',
              newline='') as outfile:  # Pull up a separate csv to write to, an output for collected data

          w = csv.writer(outfile)
          w.writerow([stock, VIN, make, model, year,
                    l8v])  # Need to write the previously pulled up line to new csv
          print("INVENTORY UPDATED")
          user_input = input('Do you want to add one more entry: Enter [Y/N]')
          if user_input.lower() == 'y':
              boo()
          else:
              exit()
boo()
0 голосов
/ 04 мая 2019

Некоторое улучшение в коде.

  1. Вы можете использовать циклическое условие, например while или for вместо рекурсии
  2. Вы можете открыть свой CSV-файл в начале кода, вместо того, чтобы делать это каждый раз
  3. Вы можете придумать слово сказать stop, чтобы остановить цикл, закрыть файл и выйти
  4. Вы можете использовать str.lower() == 'y' для обозначения y и Y, прописных и строчных букв

Код будет выглядеть как

import csv

def manualentry():

    #Open csv file at start
    outfile = open('INV.csv', 'a', newline='')
    w = csv.writer(outfile)  # Need to write the user input to the .csv file.

    #Everything wrapped in a while True loop, you can change to any loop accordingly
    while True:
        stock = input("Enter Stock #: ")  # Generate data for each column to fill in to the output file.
        VIN = input("Enter Full VIN: ")  # Each line asks the user to add data do the line.
        make = input("Enter Make: ")
        model = input("Enter Model: ")
        year = input("Enter Year: ")
        l8v = input("Enter L8V: ")
        print(stock, VIN, make, model, year, l8v)  # Prints the line of user data
        input4 = input("Append to inventory list? Y/N")  # Asks user to append the data to the output file.
        if input4.lower() == "y":
            w.writerow([stock, VIN, make, model, year, l8v])  # <-This is the portion that seems to fall apart.
            print("INVENTORY UPDATED")
        if input4.lower() == "n":
            print("SKIPPING. RESTARTING....")
        #If you see stop, stop writing, close the file and exit
        if input4.lower() == 'stop':
            print('Not writing anymore! Stopping')
            outfile.close()
            exit()
        else:
            print("Invalid entry restarting program.")


#Call manualentry
manualentry()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...