2014-09-30 2 views
4
나는이 파이썬 3.4 코드가 들어 측면 test.py 따라 로컬 디렉토리에 hello.txt라는 파일이있어

:극복하는 방법 파이썬 3.4 나가서 설명하자면 NameError : 이름이 'basestring은'정의되지 않은

import easywebdav 
webdav = easywebdav.connect('192.168.1.6', username='myUser', password='myPasswd', protocol='http', port=80) 
srcDir = "myDir" 
webdav.mkdir(srcDir) 
webdav.upload("hello.txt", srcDir) 

Traceback (most recent call last): 
    File "./test.py", line 196, in <module> 
    webdav.upload("hello.txt", srcDir) 
    File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/easywebdav/client.py", line 153, in upload 
    if isinstance(local_path_or_fileobj, basestring): 
NameError: name 'basestring' is not defined 

는 모두의 point 경우 경로가 앞으로 이동, 같은 해결하려면이 여러 안타 결과 인터넷 검색, "가져 오기 유형 직후를 포함하는 것입니다 : 내가 이것을 실행하면

나는이 얻을 ":

try: 
    unicode = unicode 
except NameError: 
    # 'unicode' is undefined, must be Python 3 
    str = str 
    unicode = str 
    bytes = bytes 
    basestring = (str,bytes) 
else: 
    # 'unicode' exists, must be Python 2 
    str = str 
    unicode = unicode 
    bytes = str 
    basestring = basestring 

필자는 가져 오기 유형을 사용하지 않았지만이를 포함 시키거나 그렇지 않으면 PyDev에서 차이가 나는 것처럼 보이지 않습니다. 어느 쪽이든 오류가 발생합니다. 오류의 원인이되는 행은 다음과 같습니다.

unicode = unicode 

: '정의되지 않은 변수'.

확인 내 파이썬 지식이이 시점에서 비틀 거리고 난이 사이트에서 비슷한 게시물을 찾았으나 도움이되는 부분을 충분히 찾을 수 없습니다. 내가 바스 트 링을 지정해야한다는 것을 알고 있지만 어떻게해야할지 모르겠다. 누구든지 저에게 올바른 방향으로 나를 가리 키도록 자선을 줄 수 있습니까?

+0

어떤 easywebdav 버전을 사용하고 있습니까? – ooga

+0

easywebdav 1.2.0 – volvox

답변

2

당신은 easywebdav이 체크인에서 상위 두 가지 변화처럼 client.py 파일입니다 변경할 수 있습니다 https://github.com/hhaderer/easywebdav/commit/983ced508751788434c97b43586a68101eaee67b

변화는 client.py에 str에 의해 basestring 교체에 구성되어 있습니다.

+0

위와 같은 상황에서 누구에게나 짧은 메모로 webdav.upload ('local/path/to/file', 'remote/target/* file *')를 기억하십시오. 동일한 경우에도 대상 파일 이름을 잊지 마십시오. – volvox

+0

Dead link. 다른 예를 들어 주시겠습니까? – opyate

+0

https://github.com/amnong/easywebdav/commit/983ced508751788434c97b43586a68101eaee67b – thebjorn