2017-11-17 1 views
1

Windows 10 컴퓨터에서 python 3.5에 openpyxl 라이브러리를 사용하고 공백이있는 경로 이름을 load_workbook()에 넣으려고합니다.Windows 10 컴퓨터에서 python의 openpyxl 라이브러리를 사용하고 공백이있는 load_workbook을 사용하려고합니다

나는 그것을 온라인에서 찾았으므로이 문제를 직접 해결할 수 없습니다. 나는 나의 시도의 일부를 아래에 포함시켰다.

openpyxl을 사용하여이 특정 문제에 관해 묻는 다른 사람을 찾을 수 없기 때문에 나는 뭔가를 놓치고 있어야합니다.

도움이 될 것입니다.

내 현재 해결 방법은 파일을 확인하고 가능하면 공백을 제거하기 위해 파일 이름을 바꾸는 것이지만 완전히 불필요한 것으로 보입니다. 그럴 권한이 항상 없을 수도 있습니다.

import openpyxl 
from openpyxl import load_workbook 
import os 

docName = "space book.xlsx" 
docNameWithExits = "space^ book.xlsm" 
fullPathOfDocument = "./" + docName 
fullPathOfDocumentExtraPar = "'" + "./" + docName + "'" 
fullOsPath = os.path.join("." , docName) 
docObject = open(fullPathOfDocument,"rb") 

try: 
    attempt1 = load_workbook(docName) 
    print("worked") 
except: 
    print("didnt work") 

try: 
    attempt2 = load_workbook(fullPathOfDocument) 
    print("worked") 
except: 
    print("didnt work") 

try: 
    attempt3 = load_workbook(fullPathOfDocumentExtraPar) 
    print("worked") 
except: 
    print("didnt work") 

try: 
    attempt4 = load_workbook(docNameWithExits) 
    print("worked") 
except: 
    print("didnt work") 

try: 
    attempt5 = load_workbook(fullOsPathvar) 
    print("worked") 
except: 
    print("didnt work") 

try: 
    attempt6 = load_workbook(docObject) 
    print("worked") 
except: 
    print("The computer has won") 

는 -Nex

답변

0

openpyxl.load_workbook는() 안에 공백이있는 경로를 읽을 수있는, 어떤 도움 감사에 미리 감사드립니다. 완전히 재현 할 수있는 예제에서는 통합 문서 이름과 폴더에 공백이 있습니다.

"r"로 문자열을 선행하지 않으면 문제가 발생한다고 생각합니다. "r"은 주어진 문자열을 원시 문자열로 취급하도록 python에 지시합니다.

import os 
from openpyxl import Workbook 
from openpyxl import load_workbook 

# Path to be created - please change to your desired folder location 
path = r"C:\Users\doe_j\test\python\a path\with spaces" 
wb_name = path + r"\space book.xlsx" 

if os.path.isdir(path) != True: 
    os.makedirs(path) 
    print(path, "created!") 
elif os.path.isdir(path) != False: 
    print(path, "already exists!") 


# making a workbook so this example is reproducible 
wb = Workbook() 
ws = wb.active 

ws["A1"] = "Putting some text in" 

wb.save(wb_name) 

# loading that same workbook 
wb = load_workbook(wb_name) 
ws = wb.active 

ws["A3"] = "Adding Some more text in" 

wb.save(wb_name) 

이 예제는 Windows 10, python 3.5 및 openpyxl 2.4.7에서 테스트되었습니다.

+0

오, 정말 고마워요! 나는 무엇이 잘못되었는지 확신하지 못한다. 나는 그것이 .과 함께 프로그램 경로를 가리키는 것이라고 생각하지만, 나는 단지 os.path.join (os.getcwd(), fileName)을 사용한다. 귀하의 코드를 예제로 사용하여 경로에 공백이 포함 된 임의의 문서에 대해 작업 할 수있게되었습니다. 해결책을 주셔서 감사합니다. 하지만 이제 load_workbook은 내가주의하는 실제 파일에서 zip 파일을 찾고 있습니다. XML 데이터베이스에서 출력 되었기 때문에 XML 구조가 다르다고 생각합니다. 여행은 계속됩니다. 다시 한번 감사드립니다. –

관련 문제