Več

Preimenovanje imen datotek v standardno obliko datoteke z uporabo Pythona

Preimenovanje imen datotek v standardno obliko datoteke z uporabo Pythona


Delam v okolju ESRI ArcGIS. Imam mapo, polno datotek .xyz, ki so poimenovane v določeni stari obliki datoteke, na primer2014516_MS_005.xyzŽelim, da bi lahko prelistali celotno mapo in vsako datoteko preimenovali v novo obliko, na primerMS_e1614.xyz. Kot lahko vidite, je predstavljenih veliko premikov nizov in novih znakov.

Ali me lahko fantje usmerite v pravo smer, če že obstaja vir, podoben temu vprašanju?

Tukaj je tisto, kar imam do sedaj.

import os survey_type = ['MB', 'SB'] #Pot do datoteke za mapo, ki nas zanima = r'C:  Data Management  Implementation  xyz_data '#Spisek vseh datotek v imeniku file_list = os.listdir (mapa) natisni file_list

To lahko storite na več načinov, morda pa je najpreprostejša uporaba os.rename (). Prelistajte file_list in preimenujte v skladu z algoritmom, ki ga uporabljate. Za vaš primer (nepreverjeno, najprej poskusite kopirati svoje podatke):

za datoteko na seznamu datotek: name_parts = file.split ('_') # = ['2014516', 'MS', '005.xyz'] pre = '_'. join ([name_parts [1], 'e'] ) # = 'MS_e' mid = name_parts [0] [-2:] # = '16' suf = name_parts [0] [2: 4] # = '14' ext = '.xyz' new_file = ". Join ( [pre, mid, suf, ext]) poskusite: os.rename (file, new_file), razen Exception as e: print ('Izjema je: {0}'. format (e)

To je neodvisno od Arc. Kot je navedeno zgoraj, obstajajo še druge metode, vendar je to ena.


Malo mi je nejasno, kako se bo prvotno ime datoteke prevedlo v novo ime datoteke, vendar je tukaj delček pythona, ki bi vas moral usmeriti v pravo smer:

uvoz OS za datoteko v os.listdir ('.'): if file.endswith ('. xyz'): a = file.split ('_') ## za mesece od 1 do 9, če len (a [0]) == 7: natisnite "dela na" + a [1] + '_e' + a [0] [5: 7] + a [0] [2: 4] + '.xyz' os.rename (datoteka, a [1] + '_e' + a [0] [5: 7] + a [0] [2: 4] + '.xyz') ## za mesece 10, 11, 12, če len (a [0]) == 8: natisnite "dela na" + a [1] + '_e' + a [0] [6: 8] + a [0] [2: 4] + '.xyz' os.rename (datoteka, a [1] + '_e' + a [0] [6: 8] + a [0] [2: 4] + '.xyz')

Zgornjo kodo bo treba shraniti v imenik z datotekami, ki jih želite preimenovati. Če želite ta delček pythona shraniti kam drugam, boste morali posodobiti imenik iz '.' na mesto datotek, ki jih želite preimenovati.

Ta datoteka posebej gradi niz vseh datotek v ciljnem imeniku (matrika se imenuje datoteka).

Za vsak element v matrici, če se konča z '.xyz', bo predstavitev niza imena datoteke razdelila na podčrtaj.

Vsako ime datoteke je zdaj matrika, ki jo sestavljajo datum, kratica države in številke za stanjem. V zgornjem primeru bom videl kratico stanja, združil '_e', nato združil samo zadnji dve števki leta in tisto, kar se zdi številka dneva, in na koncu povezal ime razširitve.


Poglej si posnetek: Kopiranje, premikanje in preimenovanje datotek