File write, weird behaviour

MRAB python at mrabarnett.plus.com
Sun Feb 19 15:14:23 EST 2023


On 2023-02-19 19:31, Chris Angelico wrote:
> On Mon, 20 Feb 2023 at 06:24, Thomas Passin <list1 at tompassin.net> wrote:
>>
>> On 2/19/2023 1:53 PM, Chris Angelico wrote:
>> > On Mon, 20 Feb 2023 at 03:41, Azizbek Khamdamov
>> > <azizbek.khamdamov at gmail.com> wrote:
>> >>
>> >> Example 1 (works as expected)
>> >>
>> >> file = open("D:\Programming\Python\working_with_files\cities.txt",
>> >> 'r+') ## contains list cities
>> >
>> > Side note: You happened to get lucky with P, w, and c, but for the
>> > future, I recommend using forward slashes for your paths:
>> >
>> > open("D:/Programming/Python/working_with_files/cities.txt", "r+")
>> >
>> > Otherwise, you may run into annoying and hard-to-solve problems. Or
>> > alternatively, you'll upgrade to a newer Python and start getting
>> > warnings, which would at least tell you that there's a problem.
>>
>> Or use r'...' strings.  If you are copying a path to clipboard from
>> Windows Explorer - a fairly common operation - it's much easier to
>> prepend the "r" than to change all the backslashes to forward slashes.
>>
> 
> Yep, either way. I personally prefer using forward slashes since
> there's no way to end an r-string with a single backslash, which is
> often useful when building a path:
> 
> # won't work
> path = r"c:\path\to\some\"
> open(path + "file")
> 
> # will work
> path = "c:/path/to/some/"
> open(path + "file")
> 
When I build a path, I use os.path.join, so it's only a problem if one 
of the strings refers to the root of a drive, e.g. "C:\\".


More information about the Python-list mailing list