Выражение - что-то, что возвращает значение, тогда как оператор не делает.
Для примеров:
1 + 2 * 4 * foo.bar() //Expression
foo.voidFunc(1); //Statement
Грандиозное предприятие между этими двумя состоит в том, что можно объединить выражения в цепочку вместе, тогда как операторы не могут быть объединены в цепочку.
os.rename("c:/a", "c:/b/a")
эквивалентно
move c:\a c:\b
в командной строке Windows
os.rename ("c: / a /", "c: / b" /) -> Изменяет имя папки a в папке b
os.rename (" c: / a / "," c: / b / a ") -> Поместите папку b в папку a
Когда мне нужно много операций с файловой системой, я предпочитаю использовать модуль 'path':
http://pypi.python.org/pypi/path.py/2.2
Это вполне хорошая и легкая оболочка для встроенного модуля 'os.path'.
Также код:
last_part = os.path.split(src)[1]
немного странный, потому что для этого есть специальная функция:
last_part = os.path.basename(src)
Вам нужно будет указать полный путь, по которому он перемещается:
src = 'C:\a'
dst_dir = 'C:\b'
last_part = os.path.split(src)[1]
os.rename(src, os.path.join(dst_dir, last_part))
На самом деле, похоже, что shutil.move
сделает то, что вы хотите, просмотрев его документацию. :
Если местом назначения является каталог или символическая ссылка на каталог, источник перемещается внутрь каталога.
(И его источник .)
Использование Twisted FilePath :
from twisted.python.filepath import FilePath
FilePath("c:/a").moveTo(FilePath("c:/b/a"))
или, в более общем смысле:
from twisted.python.filepath import FilePath
def moveToExistingDir(fileOrDir, existingDir):
fileOrDir.moveTo(existingDir.child(fileOrDir.basename()))
moveToExistingDir(FilePath("c:/a"), FilePath("c:/b"))