File write, weird behaviour

Thomas Passin list1 at tompassin.net
Sun Feb 19 15:14:42 EST 2023


On 2/19/2023 2:31 PM, 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")

Never hit that one before.  To be classified as "Learn something new 
every day"!

I've been using pathlib more lately.  It does clever things with "/" -

 >>> from pathlib import PurePath
 >>> p1 = PurePath('c:/this') / 'is' / 'a' /'test'
 >>> p1
PureWindowsPath('c:/this/is/a/test')
# on Linux, would be a PurePosixPath

and also

 >>> p2 = PurePath('c:/this/') /'is' /'a' /'test'
 >>> p2
PureWindowsPath('c:/this/is/a/test')

Despite the apparent forward slashes, the right separators get used for 
the OS. And the Paths can be used with open(), etc.




More information about the Python-list mailing list