de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
 David542
David542
Question

Jak przenieść plik w Pythonie

Zajrzałem do interfejsu Pythona os, ale nie byłem w stanie zlokalizować metody przenoszenia pliku. Jak mógłbym zrobić odpowiednik $ mv ... w Pythonie?

>>> source_files = '/PATH/TO/FOLDER/*'
>>> destination_folder = 'PATH/TO/FOLDER'
>>> # equivalent of $ mv source_files destination_folder
800 2012-01-13T22:17:58+00:00 3
Aurgho Bhattacharjee
Aurgho Bhattacharjee
Edytowane pytanie 29. czerwca 2018 в 11:21
Programowanie
file
python
file-handling
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Solution / Answer
 ig0774
ig0774
13. stycznia 2012 в 10:19
2012-01-13T22:19:58+00:00
Więcej
Źródło
Edytuj
#15183822

os.rename(), shutil.move(), lub os.replace().

Wszystkie wykorzystują tę samą składnię:

import os
import shutil

os.rename("path/to/current/file.foo", "path/to/new/destination/for/file.foo")
shutil.move("path/to/current/file.foo", "path/to/new/destination/for/file.foo")
os.replace("path/to/current/file.foo", "path/to/new/destination/for/file.foo")

Zauważ, że musisz podać nazwę pliku (file.foo) zarówno w źródłowym jak i docelowym argumencie. Jeśli zostanie ona zmieniona, plik zostanie przemianowany, jak również przeniesiony. Zauważ również, że w pierwszych dwóch przypadkach katalog, w którym tworzony jest nowy plik musi już istnieć. W Windows, plik o tej nazwie nie może istnieć lub zostanie zgłoszony wyjątek, ale os.replace() bezgłośnie zastąpi plik nawet w takim przypadku.

Jak zauważono w komentarzach do innych odpowiedzi, shutil.move po prostu wywołuje os.rename w większości przypadków. Jednakże, jeśli miejsce docelowe jest na innym dysku niż źródło, to zamiast tego skopiuje, a następnie usunie plik źródłowy.

Federico S
Federico S
Edytowana odpowiedź 30. września 2019 в 6:50
1155
0
Jim Calfas
Jim Calfas
30. maja 2013 в 9:12
2013-05-30T21:12:13+00:00
Więcej
Źródło
Edytuj
#15183824

Chociaż os.rename() i shutil.move() zmienią nazwy plików, komenda, która jest najbliższa uniksowej komendzie mv to shutil.move(). Różnica polega na tym, że os.rename() nie działa jeśli źródło i miejsce docelowe są na różnych dyskach, podczas gdy shutil.move() nie dba o to na jakim dysku są pliki.

 alecxe
alecxe
Edytowana odpowiedź 30. maja 2013 в 9:28
227
0
 jmontross
jmontross
22. lutego 2013 в 2:30
2013-02-22T02:30:13+00:00
Więcej
Źródło
Edytuj
#15183823

Zarówno dla os.rename jak i shutil.move będziesz musiał zaimportować moduł. Żaden znak * nie jest konieczny, aby wszystkie pliki zostały przeniesione.

Mamy folder w /opt/awesome o nazwie source z jednym plikiem o nazwie awesome.txt.

in /opt/awesome
○ → ls
source
○ → ls source
awesome.txt

python 
>>> source = '/opt/awesome/source'
>>> destination = '/opt/awesome/destination'
>>> import os
>>> os.rename(source, destination)
>>> os.listdir('/opt/awesome')
['destination']

Użyliśmy os.listdir, aby zobaczyć, że nazwa folderu faktycznie się zmieniła. Oto shutil przenoszący miejsce docelowe z powrotem do źródłowego.

>>> import shutil
>>> shutil.move(destination, source)
>>> os.listdir('/opt/awesome/source')
['awesome.txt']

Tym razem sprawdziłem wewnątrz folderu źródłowego, aby upewnić się, że plik awesome.txt, który utworzyłem istnieje. Jest tam :)

Teraz przenieśliśmy folder i jego pliki ze źródła do miejsca docelowego i z powrotem.

 jmontross
jmontross
Edytowana odpowiedź 9. maja 2013 в 1:27
32
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
Jasur Fozilov
Zarejestrowany 9 godzin temu
2
Zuxriddin Muydinov
Zarejestrowany 1 dzień temu
3
Денис Анненский
Zarejestrowany 3 dni temu
4
365
Zarejestrowany 1 tydzień temu
5
True Image
Zarejestrowany 1 tydzień temu
BG
DE
EL
ES
FI
FR
ID
IT
JA
KO
NL
PL
PT
RU
SL
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem