My friend wanted me to send her a list of songs from one of my iTunes playlists, so I exported the playlist within the app itself. It comes as a plain text file, where each field is separated a
'\t' and each line is separated by a
'\r'. Since there is so much extraneous information, I decided to write a Python script that would delete all fields but the song title and artist name.
How is the design and format of my code? How does it fit in with Python best practices? Is there a much easier way to do accomplish the same job that I just overlooked?
The input file looks like:
Name\tArtist\tComposer\tAlbum\tGrouping\tGenre\tSize\tTime\tDisc Number\tDisc Count\tTrack Number\tTrack Count\tYear\tDate Modified\tDate Added\tBit Rate\tSample Rate\tVolume Adjustment\tKind\tEqualizer\tComments\tPlays\tLast Played\tSkips\tLast Skipped\tMy Rating\tLocation You Shook Me All Night Long\tAC/DC\t\tThe Very Best\t\tHard Rock\t5468228\t212\t\t\t9\t\t2001\t4/17/12, 2:29 PM\t4/17/12, 2:26 PM\t192\t44100\t\tMPEG audio file\t\t\t5\t3/12/13, 10:41 PM\t\t\t\tMacintosh HD:Users:UserName:Music:iTunes:iTunes Media:Music:AC_DC:The Very Best:09 You Shook Me All Night Long.mp3
The output file looks like:
Name\tArtist\t You Shook Me All Night Long\tAC/DC\t Miss Murder\tAFI\t
My code is:
from sys import argv def main(file): with open(argv, 'r') as file: data = file.read() newdata = data.split('\r') output =  for line in newdata: tabc = 0 newline = "" for char in line: newline += char if char == '\t': tabc += 1 if tabc == 2: break output.append(newline) outPutString = '\n'.join(output) with open(argv[:-4]+'Out.txt', 'w') as file: file.write(outPutString) if __name__ == '__main__': file = argv main(file)