The best way to learn python (or any programming language) is to pick something you want to do and start doing it in the language you want to learn.
Pick anything that interests you and is slightly more complex then a simple Hello World. IRC bots are a good project, as are most small games like snake, tetris etc.
For python there exists a wealth of information both online and in dead tree form:
For the topics you described, you need to understand operating systems more than python. Once the OS level becomes clear, the Python code is quite obvious.
This is one of the best books ever written:
Advanced Programming in the UNIX Environment, Second Edition (Addison-Wesley Professional Computing Series) (Paperback)
5 star amazon reviews (I'd give it 6).
Once I realized that networking, file I/O, shared memory, IPC, sockets, signals, etc... are all provided by the OS layer, then this became the answer to a lot of questions.
Then going back to python, you understand what all the stuff in the os module means, and can write really advanced programs with ease.
I find "Python Essential Reference" useful. It is a great reference and general language book.