gpt4 book ai didi

Python 脚本无法在 Linux 上运行

转载 作者:太空宇宙 更新时间:2023-11-04 05:36:44 24 4
gpt4 key购买 nike

我有这个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"

它给了我空输出。我不知道问题出在哪里

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

最佳答案

好的,您有权限,但是当您列出文件时,您不在正确的目录中。 list_dir 为您提供不带路径的目录/文件列表,os.path.isfile('one')os.path.isdir('one') 将检查当前目录中是否存在目录“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"

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"

或使用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"

编辑:更清楚地说,原始脚本的错误是您的文件结构如下:

/home/user/bin/your_script.py
/home/vmware/tobackup/
/home/vmware/tobackup/one
/home/vmware/tobackup/two
...

当您转到/home/user/bin 运行脚本(例如 python your_script.py)时,os.listdir('/home/vmware/tobackup') 会为您提供/home/vmware/tobackup 中的文件和目录名称列表,即 ['one','two', ...]。但是,当您从目录/home/user/bin 执行 os.path.isfile('one') 时,您会检查 /home/user/bin/one 是否是一个文件,而不是/home/vmware/tobackup/one 是否是一个文件。由于 /home/user/bin/one 不存在,因此您不会得到任何输出。

关于Python 脚本无法在 Linux 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6073188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com