66

I am working on file operations using python.

I have a filepath as :

filepath = "E:/ABC/SEM 2/testfiles/all.txt"

when I am opening the file using python, it says me :

IOError: No such file:

but, the file is present on the drive.
It may be because windows cannnot take "SEM 2" properly as it contains space.
How can I deal with such whitespaces in the path of window path?

sam
  • 18,509
  • 24
  • 83
  • 116

9 Answers9

70
path = r"C:\Users\mememe\Google Drive\Programs\Python\file.csv"

Closing the path in r"string" also solved this problem very well.

billmanH
  • 1,298
  • 1
  • 14
  • 25
21

Try putting double quotes in your filepath variable

"\"E:/ABC/SEM 2/testfiles/all.txt\""

Check the permissions of the file or in any case consider renaming the folder to remove the space

valentinos
  • 428
  • 2
  • 11
21

There is no problem with whitespaces in the path since you're not using the "shell" to open the file. Here is a session from the windows console to prove the point. You're doing something else wrong

Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on wi
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>>
>>> os.makedirs("C:/ABC/SEM 2/testfiles")
>>> open("C:/ABC/SEM 2/testfiles/all.txt","w")
<open file 'C:/ABC/SEM 2/testfiles/all.txt', mode 'w' at 0x0000000001D95420>
>>> exit()

C:\Users\Gnibbler>dir "C:\ABC\SEM 2\testfiles"
 Volume in drive C has no label.
 Volume Serial Number is 46A0-BB64

 Directory of c:\ABC\SEM 2\testfiles

13/02/2013  10:20 PM    <DIR>          .
13/02/2013  10:20 PM    <DIR>          ..
13/02/2013  10:20 PM                 0 all.txt
               1 File(s)              0 bytes
               2 Dir(s)  78,929,309,696 bytes free

C:\Users\Gnibbler>
John La Rooy
  • 295,403
  • 53
  • 369
  • 502
4

a hack on Mac:

path = '/Volumes/Public/ABY/Documents/Musiq/slumdog millonaire/Mausam and Escape.mp3'
nPath = path.replace(' ', '\\ ')
print(nPath)

Output:

/Volumes/Public/ABY/Documents/Musiq/slumdog\ millonaire/Mausam\ and\ Escape.mp3
Vettiyanakan
  • 7,957
  • 6
  • 37
  • 55
1

(WINDOWS - AWS solution)
Solved for windows by putting tripple quotes around files and paths.
Benefits:
1) Prevents excludes that quietly were getting ignored.
2) Files/folders with spaces in them, will no longer kick errors.

    aws_command = 'aws s3 sync """D:/""" """s3://mybucket/my folder/"  --exclude """*RECYCLE.BIN/*""" --exclude """*.cab""" --exclude """System Volume Information/*""" '

    r = subprocess.run(f"powershell.exe {aws_command}", shell=True, capture_output=True, text=True)
1

I found a simple hack try adding a single quote before the the double quotes like :

os.system(r'"C:\Program Files\Google\Chrome\Application\chrome.exe"')

worked for me

For Cc
  • 15
  • 6
0

double back slash \\ will solve the problem

subprocess.run('type "C:\\Users\\nameofuser\\blackdrive - somecorp\\Desktop\\seadlines_data.txt"',shell=True)
Z4-tier
  • 7,287
  • 3
  • 26
  • 42
0

You can use triple quotation marks """ as such:

filepath = """E:/ABC/SEM 2/testfiles/all.txt"""
Adriaan
  • 17,741
  • 7
  • 42
  • 75
  • 1
    Please read [answer] and [edit] your answer to contain an explanation as to why this code would actually solve the problem at hand. Always remember that you're not only solving the problem, but are also educating the OP and any future readers of this post. – Adriaan Feb 21 '23 at 10:00
0

It works for me

import os

Set working directory

os.chdir("""C:/Users/admin/nht1/OneDrive - quarrycubicle/Desktop/Docs/AI Data Analysis/Tai lieu tham khao""")

os.getcwd()

Out[1]: 'C:\Users\admin\nht1\OneDrive - quarrycubicle\Desktop\Docs\AI Data Analysis\Tai lieu tham khao'

TylerH
  • 20,799
  • 66
  • 75
  • 101