I am trying to do $ mv <file> .. in a python script using subprocess.call(). I am able to do this on ‘normal’ filenames, but on certain filenames it does not work. I do not have control of the filenames that are given to the script. Here is an example:
M filename is "ITunes ES Film Metadata_10_LaunchTitles(4th Batch)_08_20_2010.XLS"
When I try and do the command directly into the python prompt and drag the file into it, this is what I get:
>>> /Users/David/Desktop/itunes_finalize/TheInventionOfLying_CSP/
ITunes\ ES\ Film\ Metadata_10_LaunchTitles\(4th\ Batch\)_08_20_2010.XLS
No such file or directory
How would I go about moving this file in a python script?
Update:
Thanks for the answers, this is how I ended up doing it:
for file in glob.glob(os.path.join(dir, '*.[xX][lL][sS]')):
shutil.move(file, os.path.join(os.path.dirname(file), os.path.pardir))
subprocessis not the best way to go here. For example, what if you’re on an operating system that isn’t POSIX compliant?Check out the
shutilmodule.If finding the actual string for the filename is hard you can use
glob.globto pattern match what you want. For example, if you’re running the script/prompt from the directory with the .XLS file in question you could do the following.You’ll get a list back with all the file strings that fit that pattern.