[EMAIL PROTECTED] wrote: >The python community is very helpful to newbies like me. I did however >manage to solve my problem in the meantime. I needed the modification >time of certain files on various computers, but I didn't know the >usernames ahead of time, so I used windows %userprofile% method. >Python likes forward slashes in file names, whereas windows likes back >slashes.
Your last sentence is not true at all. The Windows APIs accept forward slashes anywhere they accept backward slashes. It is only the command shell insists on back slashes. >Here is my script. > >import os, re >u = os.getenv("USERPROFILE") ># python returns "c:\\documents and Settings\\user" ># note the escaped backslashes which windows hates. What??? This is not only false, it is completely backwards from what you just said. The string does NOT actually contain any doubled backslashes. You only SEE that because of the way you are displaying them to your terminal. This string: x = "\\\n" contains exactly two characters: a backslash, and a newline. Try it and see. ># let's repair that with re.sub >u = re.sub( r"\\", "/", u) That doesn't do what you think it does. r"\\" contains two characters, both backslashes. However, your source string doesn't CONTAIN any doubled backslashes. So, this statement does nothing. Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> x = "\\\n" >>> len(x) 2 >>> x = "\\" # contains one character: a backslash >>> len(x) 1 >>> x '\\' >>> x = r"\\" # contains two characters: both backslashes >>> len(x) 2 >>> x # but when Python displays it, it escapes them '\\\\' >>> >f = u+"/dir1/file1" >mod = os.path.getmtime(f) ># success, now do something It would also have succeeded with all backslashes, or with mixed forward and backslashes. You're focussing on the wrong things here. >c = "copy '%userprofile%\dir1\file1' c:\dir2\file2" ># note back slashes here which windows tolerates. That is WRONG, and it only worked by accident. If your directory names had been "index" or "name", you would have found this out. The correct way to write that is either: c = "copy '%USERPROFILE%\\dir1\\file1' c:\\dir2\\file2" or c = r"copy '%USERPROFILE%\dir1\file1' c:\dir2\file2" ># In the os.system context, python delivers unescaped slashes. >os.system(c) ># success There is no reason to go to an external program for this at all. Just do this: import shutil shutil.copyfile( sourcefilename, destfilename ) >I'm a retired old fart trying to learn python so I welcome criticism >and advice. Tell us what you are really trying to do, and we can offer some simple scripts that you can use as an example. -- Tim Roberts, [EMAIL PROTECTED] Providenza & Boekelheide, Inc. -- http://mail.python.org/mailman/listinfo/python-list