473,699 Members | 2,534 Online

# How to convert a string like '777' to an octal integer like 0777?

Hi,

This may be a rudimentary question:

How to convert a string like '777' to an octal integer like 0777,
so that it can be used in os.chmod('myfil e',0777)?

I know the leading zero is important in os.chmod.

KB

Jul 31 '05 #1
5 15179
KB wrote:
Hi,

This may be a rudimentary question:

How to convert a string like '777' to an octal integer like 0777,
so that it can be used in os.chmod('myfil e',0777)?

I know the leading zero is important in os.chmod.

There is no law that says constant arguments to os.chmod have to be
expressed in octal -- it's just a historical accident that it's
convenient (for octal grokkers, anyway): there are 3 permissions (rwx)
and 2 ** 3 == 8.

Consider the following, whcih should provide enlightenment as well as
print 0777, int("777", 8) 511 511

Cheers,
John
Jul 31 '05 #2
Thanks, John.

But my point is how to keep the leading zero in 0777,
in order to be used in os.chmod('myfil e', 0777)?

Jul 31 '05 #3
KB wrote:
Thanks, John.

But my point is how to keep the leading zero in 0777,
in order to be used in os.chmod('myfil e', 0777)?

I don't understand. The leading zero only exists in a particular string
representation. os.chmod() needs an integer, not a string. 0777 == 511.

os.chmod('myfil e', 0777)
os.chmod('myfil e', 511)
os.chmod('myfil e', int('777', 8))

They all do *exactly* the same thing. End of story.

If you really need a string representation in octal (os.chmod()
doesn't), then use oct() on the integer.

--
Robert Kern
rk***@ucsd.edu

"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter

Jul 31 '05 #4
> The leading zero only exists in a particular string
representation. os.chmod() needs an integer, not a string. 0777 == 511.

Thanks, Robert.

What you said is exactly what I did not understand clearly,
because I am just a beginner in Python programming.

KB

Jul 31 '05 #5
On Sun, 31 Jul 2005 00:24:08 -0700, KB wrote:
Thanks, John.

But my point is how to keep the leading zero in 0777,
in order to be used in os.chmod('myfil e', 0777)?

os.chmod('myfil e', 0777)

Python will recognise integers written in octal if you leave a
leading zero, and in hex if you use a leading 0x or 0X.
010 8 0x10 16 010 + 0x10

24

As John pointed out, you don't have to use octal for chmod. You can use
decimal, or hex -- anything that is an integer.

--
Steven.

Jul 31 '05 #6

This thread has been closed and replies have been disabled. Please start a new discussion.