Robert Nagtegaal
Robert Nagtegaal

Reputation: 897

Escape $ in filename

I have a list of files on my filesystem which I'd like to chmod to 664 via python.

On of the filenames/dirpaths (I am not allowed to change the filename nor dirpaths!!!) is:

/home/media/Music/Ke$ha/song.mp3 (NOTE $ is a literal, not a variable!)

I receive the files in a list: ['/some/path/file1', '/some/otherpath/file2', etc...]

If I try to run the following code:

files = ['/home/media/Music/Ke$ha/song.mp3']

for file in files: os.chmod(file, 0664)

It complains that it cannot find /home/media/Music/Ke$ha/song.mp3. Most likely (I guess) because the called shell tries to expand $ha, which is obviously wrong.

The 'Ke$ha' file is just an example, there are many more files with escape characters in it (e.g. /home/media/Music/Hill's fire/song.mp3)

The question I have is: How can I elegantly convince python and/or the shell to handle these files properly?

Kind regards,

Robert Nagtegaal.

Upvotes: 0

Views: 1311

Answers (2)

iammehrabalam
iammehrabalam

Reputation: 1335

You can do like this

files=["/home/media/Music/Ke$ha/song.mp3", "/home/media/Music/Hill's fire/song.mp3"]

import os,re
os.system("chmod 777  " + re.escape(files[i]))

Upvotes: 1

Slavi
Slavi

Reputation: 130

How about this, a raw string? Also is your username 'media'?

files = [r'/home/media/Music/Ke$ha/song.mp3']

Upvotes: 0

Related Questions