Konsolowy menadżer plików

Konsolowy menadżer plików
PolskaGra
  • Rejestracja:ponad 2 lata
  • Ostatnio:ponad rok
  • Postów:17
0

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

Kopiuj
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?

edytowany 8x, ostatnio: Riddle
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około godziny
  • Lokalizacja:Koszalin
  • Postów:10094
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:

Kopiuj
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:

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

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

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

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

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

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

Kopiuj
> 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:

Kopiuj
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")
edytowany 6x, ostatnio: Riddle
PolskaGra
Dziękuje za odpowiedź!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.