Created
June 7, 2016 11:02
-
-
Save black23/34647ba2e43e0a10ba29fb7f34b34800 to your computer and use it in GitHub Desktop.
Skript v Pythonu na konverzi řádkového MARC (TAG) do formátu čitelného MarcEditem
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python27 | |
''' | |
Script pro prevod souboru pro MarcEdit | |
''' | |
import string | |
import sys | |
import os | |
def usage(): | |
''' | |
Vypise pouziti programu. | |
''' | |
print("""Usage: | |
%s vstupnisoubor.txt vystupnisoubor.txt | |
jako soubor lze pouzit "-" pro stdin, nebo stdout | |
""" % os.path.basename(sys.argv[0])) | |
exit(1) # ukonceni s chybou | |
def main(): | |
''' | |
Hlavni funkce | |
''' | |
if len(sys.argv) < 2: # kdyz nejsou zadany parametry, vypise se usage | |
usage() | |
''' | |
Otevreni vstupniho souboru | |
''' | |
if sys.argv[1]=='' or sys.argv[1]=='-': # pokud neni zadano, nebo je zadano minus, pouzije se stdin | |
f_in = sys.stdin | |
else: | |
if os.path.isfile(sys.argv[1]): | |
f_in = open(sys.argv[1],'r') # otevreni vstupniho souboru, nazev je zadan parametrem | |
else: | |
sys.stderr.write("Vstupni soubor neexistuje\n") #chybova vlaska do err vystupu. | |
''' | |
Otevreni vystupniho souvoru | |
''' | |
if len(sys.argv)<3 or sys.argv[2]=='' or sys.argv[2]=='-': # pokud neni zadano, nebo je minus, pouzije se stdout | |
f_out = sys.stdout | |
else: | |
f_out = open(sys.argv[2],'w') # otevreni vystupniho souboru, nazev je zadan parametrem | |
lab_count=0 | |
''' | |
Pocitadlo "lab" zaznamu kvuli odradkovani | |
''' | |
for line_in in f_in: # radek po radku | |
line_in=line_in.rstrip('\r\n') # odtraneni konce radku | |
line_out='' # prazdy odrhozi radek | |
if line_in=='': # preskoceni prazdnych radek | |
continue | |
if line_in[:3] == 'lab': # kdyz prvni tri znaky obsahuji "lab" | |
if lab_count>0: # pokud je to jiz opakovany "lab" prida se odradkovani | |
line_out=line_out+'\n' | |
else: | |
line_out='' | |
line_out=line_out+'=LDR'+' '+line_in[7:] #radek bude obsahovat =LDR a znaky od sedmeho znaku | |
lab_count=lab_count+1 # pocitani "lab" | |
elif int(line_in[:3])<=8: # zaznamy s cislem <=8 | |
line_out='='+line_in[:3]+' '+line_in[7:] # prvni tri znaky + znaky od sedmeho znaku | |
else: # ostani zanamy | |
tag=line_in[:3] # prvni tri znaky do promene tag | |
if tag=='980': # pokud tag je 980 | |
tag='993' # prirad do tag 993 | |
line_out='='+tag+' '+string.replace(line_in[4:6],' ','\\')+line_in[7:] # zaznam bude ulozen ve formatu: prvni tri znaky, dve mezery, pak 4 az sesty znak, pripadne pokud obsahuje mezeru nahradi se lomitkem + znaky od sedmeho znaku | |
f_out.write(line_out+'\n') # zapsani radku do vystupniho souboru | |
f_in.close() # zavreni vstupniho souboru | |
f_out.close() # zavreni vystupniho souboru | |
if __name__ == "__main__": # spusteni hlavni funkce | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment