我有这个python脚本
#!/usr/bin/env python
import datetime, os
from time import gmtime, strftime
to_backup = "/home/vmware/tobackup"
var1 = datetime.datetime.now().strftime('%b-%d-%I%p')
for f in os.listdir(to_backup):
if(os.path.isfile(f)):
print f + " is a file"
if(os.path.isdir(f)):
print f + " is a directory"
Run Code Online (Sandbox Code Playgroud)
它给了我空的输出.我不知道问题出在哪里
输出为jimbob博士回答
total 36
-rwxrwxr-x 1 vmware vmware 440 May 5 07:41 back.py
-rwxrwxr-x 1 vmware vmware 2624 May 4 20:35 backup.sh
drwxr-xr-x 2 vmware vmware 4096 Jun 22 2010 Desktop
drwxrwxr-x 2 vmware vmware 4096 May 5 03:51 destination
drwxr-xr-x 2 root root 4096 May 4 18:49 public_html
drwxrwxr-x 2 vmware vmware 4096 May 1 07:47 python
-rwxrwxr-x 1 vmware vmware 560 May 1 13:20 regex.py
drwxrwxrwx 7 vmware vmware 4096 May 5 03:50 tobackup
total 20
drwxrwxrwx 2 vmware vmware 4096 May 5 03:50 five
drwxrwxrwx 2 vmware vmware 4096 May 5 03:50 four
drwxrwxrwx 2 vmware vmware 4096 May 5 03:50 one
drwxrwxrwx 2 vmware vmware 4096 May 5 03:50 three
drwxrwxrwx 2 vmware vmware 4096 May 5 03:50 two
Run Code Online (Sandbox Code Playgroud)
好的,你有权限,但是当你列出文件时,你不在正确的目录中.list_dir给你的文件/目录列表,没有他们的路径,os.path.isfile('one')并os.path.isdir('one')会检查当前目录的目录"一"是否存在(无论你从推出的脚本,除非你明确地改变了目录中os.chdir或包含的路径,例如,os.path.isdir('/home/vmware/tobackup/one').
#!/usr/bin/env python
import datetime, os
from time import gmtime, strftime
import subprocess
to_backup = "/home/vmware/tobackup"
var1 = datetime.datetime.now().strftime('%b-%d-%I%p')
os.chdir(to_backup)
# os.listdir(to_backup) = ['one', 'two', 'three', 'four', 'five']
for f in os.listdir(to_backup):
if(os.path.isfile(f)):
print f + " is a file"
if(os.path.isdir(f)):
print f + " is a directory"
Run Code Online (Sandbox Code Playgroud)
要么
to_backup = "/home/vmware/tobackup"
var1 = datetime.datetime.now().strftime('%b-%d-%I%p')
# os.listdir(to_backup) = ['one', 'two', 'three', 'four', 'five']
for f in os.listdir(to_backup):
if(os.path.isfile(os.path.join(to_backup,f))):
print f + " is a file"
if(os.path.isdir(os.path.join(to_backup,f))):
print f + " is a directory"
Run Code Online (Sandbox Code Playgroud)
或者walk(但实际上并没有穿过子区).
to_backup = "/home/vmware/tobackup"
var1 = datetime.datetime.now().strftime('%b-%d-%I%p')
root, dirs, files in os.walk(to_backup).next()
for file in files:
print f + " is a file in " + root
for dir in dirs:
print f + " is a directory"
Run Code Online (Sandbox Code Playgroud)
编辑:为了更清楚,原始脚本的错误是你有一个文件结构,如:
/home/user/bin/your_script.py
/home/vmware/tobackup/
/home/vmware/tobackup/one
/home/vmware/tobackup/two
...
Run Code Online (Sandbox Code Playgroud)
当您转到/ home/user/bin运行脚本(例如python your_script.py)时,os.listdir('/home/vmware/tobackup')会在/ home/vmware/tobackup中为您提供文件和目录名称列表['one','two', ...].但是,当您os.path.isfile('one')从目录/ home/user/bin执行操作时,检查是否/home/user/bin/one是文件,而不是/ home/vmware/tobackup/one是否为文件.既然/home/user/bin/one不存在,就没有输出.
| 归档时间: |
|
| 查看次数: |
2103 次 |
| 最近记录: |