>python -m SimpleHTTPServer $PORT
After chunked uploading completed, commit the file by:
response = self.dropbox_client.commit_chunked_upload('/backup/docs.zip', upload_id, False) remote_path = response['path']
My understanding was remote_path in the response should be same as the full_path I passed: ‘/backup/docs.zip’, however, the remote_path is: ‘docs.zip’. form client.py /commit_chunked_upload:
The full path to which the chunks are uploaded, *including the file name*. If the destination folder does not yet exist, it will be created.
full path with filename, and it’ll be used by:
url, params, headers = self.request("/commit_chunked_upload/%s" % full_path, params, content_server=True)
a http request to : /commit_chunked_upload//backup/docs.zip will be sent. however, the actual server url is:
https://api-content.dropbox.com/1/commit_chunked_upload/auto/<path>
https://www.dropbox.com/developers/core/docs#commit-chunked-upload
1. fix the SDK :
Following CheckedUpload class, the commit url can be generated by:
path = “/commit_chunked_upload/%s%s” % (self.client.session.root, format_path(path))
2. add ‘auto’ in the front of the remote path:
response = self.dropbox_client.commit_chunked_upload('auto/' + remote_path, upload_id, False)
Create new thread to perform the progress:
http://stackoverflow.com/questions/6783194/background-thread-with-qthread-in-pyqt
Try to keep a reference:
http://stackoverflow.com/questions/8359469/python-threading-thread-scopes-and-garbage-collection
Use single to update progress:
http://stackoverflow.com/questions/9682376/progress-bar-with-pyqt
Example: UploadThread:
class UploadTaskQtThread(QtCore.QThread): tick = QtCore.pyqtSignal(int, name="upload_changed") def __init__(self, client, local_path, remote_path): QtCore.QThread.__init__(self) self.client = client self.local_path = local_path self.remote_path = remote_path def on_progress(self, progress): self.tick.emit(progress * 100) def run(self): self.client.upload_file(self.local_path, self.remote_path, self.on_progress)
Client:
def upload(self, local_file_path, remote_path): self.upload_thread = UploadTaskQtThread(client, local_file_path, remote_path) self.upload_thread.start() self.upload_thread.tick.connect(ui.progressBar.setValue)
User class, has one attribute ‘name’:
#User.py class User(object): def __init__(self, name): self.name=name def sayHi(self): print self.name, " say hi to you" def hello(self, *friends): f1, f2 = friends print "hello my friends: ", f1", and ", f2
Initialize User instance and call the methods:
>>> import User >>> john = User.User("John") >>> john.sayHi() John say hi to you >>> john.hello("Luna", "Peter") hello my friends: Luna and Peter
I got confused, because I come from Java, why every method need a ‘self’? we use the instance invoke the method, why we need to supply the instance itself?
Maybe they are static? let’s try to invoke the method in ‘Static’ way:
>>> User.User.sayHi() Traceback (most recent call last): File "", line 1, in TypeError: unbound method sayHi() must be called with User instance as first argument (got nothing instead)
Ok, how about this:
>>> User.User.sayHi(john) John say hi to you
It seems these instance method can be invoked both by Class and instance… that’s why every method requires a ‘self’?
Ok, let’s add a static method:
@staticmethod def staticHi(): print "Static Hi"
Invoke it:
>>> User.User.staticHi() Static Hi >>> john.staticHi() Static Hi
Static method can be called both by Class and instance.
Some topic about ‘slef’:
http://stackoverflow.com/questions/2709821/python-self-explained
http://neopythonic.blogspot.sg/2008/10/why-explicit-self-has-to-stay.html
by Zed A. Shaw
Stop reading my book, I don’t write it for you. I wrote it for people who don;t already know everything.
Empty before you fill. you will have a hard time learning from someone with more knowledge if you already know everything;
Go learn Lisp, I hear people who know everything really like Lisp.
A programmer may try to get you to install Python 3 and learn that, Say, “When all the Python code on your computer is Python 3, then Ii’ll try to learn it”
What I discovered after this journey of learning ( about 20 programming languages) is that it’s not the languages that matter but what you do with them … which programming language you learn and use doesn’t matter. Do not get sucked into the religion surrounding programming languages, as that will only blind you to their true purpose of being your tool for doing interesting things.
Programming as a profession is only moderately interesting. It can be a good job, but you could make about the same money and be happier running a fast food joint. You’re much better off using code as your secret weapon in another profession.
Of course, all this advice is pointless.
Finally, I’ll say that learning to create software changes you and makes you different – not better or worse, just different. you may find that people treat you harshly because you can create software, maybe using words like “nerd”. maybe you’ll find that because you can dissect their logic, they hate arguing with you . you may even find that simply knowing how a computer working makes you annoying and weird to them. to this, I have just one piece of advice: they can go to hell. the world needs more weird people who know how things work and who love to figure it all out. when they treat you like this, just remember that this is your journey, not theirs. Being different is not a crime, and people who tell you it is are just jealous that you’ve picked up a skill they never in their wildest dreams could acquire.
After I typed all these funny staff, I found this:
http://learnpythonthehardway.org/book/advice.html
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.