Czy istnieje łatwy sposób zmiany nazwy grupy plików już zawartych w katalogu przy użyciu Pythona?
Przykład: Mam katalog pełen plików * .doc i chcę zmienić ich nazwy w spójny sposób.
X.doc -> „nowy (X) .doc”
Y.doc -> „nowy (Y) .doc”
Czy istnieje łatwy sposób zmiany nazwy grupy plików już zawartych w katalogu przy użyciu Pythona?
Przykład: Mam katalog pełen plików * .doc i chcę zmienić ich nazwy w spójny sposób.
X.doc -> „nowy (X) .doc”
Y.doc -> „nowy (Y) .doc”
Taka zmiana nazwy jest dość łatwa, na przykład w przypadku modułów os i glob :
import glob, os
def rename(dir, pattern, titlePattern):
for pathAndFilename in glob.iglob(os.path.join(dir, pattern)):
title, ext = os.path.splitext(os.path.basename(pathAndFilename))
os.rename(pathAndFilename,
os.path.join(dir, titlePattern % title + ext))
Możesz następnie użyć tego w swoim przykładzie w następujący sposób:
rename(r'c:\temp\xx', r'*.doc', r'new(%s)')
Powyższy przykład skonwertuje wszystkie *.doc
pliki w katalogu c:\temp\xx
do new(%s).doc
, gdzie %s
jest poprzednią nazwą bazową pliku (bez rozszerzenia).
%
używany symbol w poleceniuos.path.join(dir, titlePattern % title + ext)
? Wiem, że%
jest przeznaczony do operacji modulo i jest również używany jako operator formatowania. Ale zwykle następuje po nims
lub wf
celu określenia formatu. Dlaczego nic (spacja) nie występuje bezpośrednio po%
tym poleceniu?Wolę pisać małe, pojedyncze linery dla każdej wymiany, którą muszę wykonać, zamiast tworzyć bardziej ogólny i złożony kod. Na przykład:
Spowoduje to zastąpienie wszystkich podkreśleń myślnikami w dowolnym nieukrytym pliku w bieżącym katalogu
źródło
rename
no such file error
pamiętaj, żeos.rename
potrzebujesz pełnej ścieżkiJeśli nie masz nic przeciwko używaniu wyrażeń regularnych, ta funkcja dałaby ci dużą moc przy zmianie nazw plików:
Więc w twoim przykładzie możesz zrobić (zakładając, że jest to bieżący katalog, w którym znajdują się pliki):
ale możesz też przywrócić początkowe nazwy plików:
i więcej.
źródło
Mam to po prostu zmienić nazwy wszystkich plików w podfolderach folderu
Zamieniam wszystkie wystąpienia old_str jakimkolwiek przypadkiem na new_str.
źródło
Spróbuj: http://www.mattweber.org/2007/03/04/python-script-renamepy/
Dostępny jest również kod źródłowy programu.
źródło
Sam napisałem skrypt w Pythonie. Jako argumenty przyjmuje ścieżkę do katalogu, w którym znajdują się pliki i wzorzec nazewnictwa, którego chcesz użyć. Jednak zmienia nazwę, dołączając kolejną liczbę (1, 2, 3 itd.) Do podanego wzorca nazewnictwa.
Mam nadzieję, że to działa dla Ciebie.
źródło
źródło
os.chdir(path_of_directory)
źródło
Miałem podobny problem, ale chciałem dopisać tekst na początku nazwy wszystkich plików w katalogu i zastosowałem podobną metodę. Zobacz przykład poniżej:
źródło
co do mnie w moim katalogu mam wiele podkatalogów, każdy podkatalog ma wiele obrazów Chcę zmienić wszystkie obrazy podkatalogu na 1.jpg ~ n.jpg
(moja własna odpowiedź) https://stackoverflow.com/a/45734381/6329006
źródło
źródło
Jeśli chcesz zmodyfikować nazwy plików w edytorze (takim jak vim), biblioteka kliknięć zawiera polecenie
click.edit()
, które może być używane do odbierania danych wejściowych użytkownika z edytora. Oto przykład tego, jak można go użyć do refaktoryzacji plików w katalogu.Napisałem aplikację wiersza poleceń, która używa tej samej techniki, ale zmniejsza zmienność tego skryptu i ma więcej opcji, takich jak refaktoryzacja rekurencyjna. Oto link do strony github . Jest to przydatne, jeśli lubisz aplikacje wiersza poleceń i jesteś zainteresowany wprowadzaniem szybkich zmian w nazwach plików. (Moja aplikacja jest podobna do polecenia „bulkrename” znajdującego się w ranger ).
źródło
Ten kod zadziała
Funkcja przyjmuje dokładnie dwa argumenty f_patth jako ścieżkę do zmiany nazwy pliku i nowa_nazwa jako nową nazwę pliku.
źródło