Konsolowy menadżer plików

0

próbuję zrobić prosty menadżer plików w pythonie, niestety funkcja replace nie działa

Default_Dir = r"C:\Users\Tomasz"
Default_Cmd = Default_Dir + ">"

while True:
    Cmd = input(Default_Cmd)
    if "open" in Cmd:
        Cmd.replace('open ', '')
        Location = Default_Dir + "\\" + Cmd
        try:
            with open(Location) as f: 
                s = f.read()
        except OSError:
            print("OPENING FILE FAILED")

Cmd input to: open sdf.txt

Może ktoś pomóc?

4
PolskaGra napisał(a):

Próbuję zrobić prosty menadżer plików w pythonie, niestety funkcja replace nie działa

Precyzuj następnym razem lepiej swoje pytania, bo to nie jest prawda że .replace() nie działa, tylko najwyraźniej działa inaczej niż byś się spodziewał.

Masz kod:

Cmd.replace('open ', '')

Przy czym .replace() oczywiście nie modyfikuje swojego argumentu, a jedynie zwraca swój wynik, więc kod powinien wyglądać jakoś tak:

remaining_command = Cmd.replace('open ', '')

Swoją drogą nawet nie powinieneś używać .replace(), bo co jakbym wpisał np taką komendę:

> open C:\user\my files\my open file.txt

to wtedy Twój .replace() przerobi mi to na

> open C:\user\my files\my file.txt

No i Twój in, również jest słaby, bo jak ktoś po prostu wpisze

> delete C:\open.txt

to Twój in "złapie" ten open.

Przy czym cały kod, moim zdaniem jest trochę średni, bo po pierwsze można by go napisać jakoś ładniej, np tak:

def execute(working_directory: str) -> None:
  command = input(working_directory + ">")
  if command.startsWith("open "):
      arguments = text[5:]
      try:
          with open(working_directory + "\\" + arguments) as f: 
              s = f.read()
      except OSError:
          print("OPENING FILE FAILED")

while True:
    execute(r"C:\Users\Tomasz")

1 użytkowników online, w tym zalogowanych: 0, gości: 1