דף 1 מתוך 1

צריך עזרה בכתיבת סקריפט פייטון.

נשלח: 28/08/2015 22:13
על ידי עדיטו
אז ככה..
אני רוצה לכתוב סקריפט שפשוט יבדוק כמה מקום פנוי יש בדיסק,

מדובר על מערכת אנדרואיד ומשום מה הפקודה os.statvfs('/')
מחזירה לי שגיאה: 'module' object has no attribute 'statvfs'.
לא משנה מה אני שם בPATH.

האם יש איזו שהי דרך?


תודה רבה

נשלח: 28/08/2015 23:18
על ידי Batnun
הדוגמאות כאן עובדות לי במק:

http://stackoverflow.com/questions/4260 ... given-file


Batnun

.

נשלח: 28/08/2015 23:33
על ידי Batnun
הנה דוגמה שעובדת:

קוד: בחירת הכל

import os
statvfs = os.statvfs('/')
print 'Free space: ', str(statvfs.f_frsize * statvfs.f_bfree / 1000000000) + ' GB'

Batnun

.

נשלח: 29/08/2015 4:19
על ידי עדיטו
@Batnun
·אני אני כותב את הפקודה הזאת זה מחזיר לי שגיאה...
'module' object has no attribute 'statvfs'.

כנראה שלא עובד עם אנדרואיד או משהו...

האם יש דרך אחרת???

נשלח: 29/08/2015 13:27
על ידי kingikra
זה מה שמצאתי בחיפוש קצר

נשלח: 29/08/2015 14:26
על ידי Batnun
kingikra כתב:זה מה שמצאתי בחיפוש קצר
...
·

statvfs אכן כבר הוסר החל מגירסה 3, אבל כאן מדובר על os.statvfs, שעדיין נתמך.
בכל מקרה, נסה לעבוד עם os.fstatvfs.


Batnun

.

נשלח: 29/08/2015 16:04
על ידי עדיטו
זה מה שניסיתי אבל לא עובד כפי שכבר כתבתי...

הפקודה כן עובדת אבל מחזירה לי שגיאה
.
'module' object has no attribute 'statvfs'.



האם יש דרך אחרת???

נשלח: 29/08/2015 17:15
על ידי kingikra
מצאתי בגוגל כמה וכמה דרכים. שווה לך לנסות אותם עד שאחד יצליח.

נשלח: 29/08/2015 18:00
על ידי Batnun
עדיטו כתב:זה מה שניסיתי אבל לא עובד כפי שכבר כתבתי...

הפקודה כן עובדת אבל מחזירה לי שגיאה
.
'module' object has no attribute 'statvfs'.



האם יש דרך אחרת???
...
·


שים לב שבתגובה הקודמת כתבתי os.fstatvfs ולא os.statvfs:

http://www.tutorialspoint.com/python/pd ... tatvfs.pdf


Batnun

.

נשלח: 08/09/2015 10:16
על ידי עדיטו
היי
ניסיתי להשתמש בos.fstatvfs
אך אני מקבל בדיוק את אותה השגיאה...

האם יש דרך אחרת לגמרי...?

נ.ב
חיפשתי בגוגל לא מצאתי שום פיתרון אחר.

נשלח: 08/09/2015 10:42
על ידי rabak
@עדיטו
·הדרך האחרת היא לפתוח בsubprocess את הפקודה df

קוד: בחירת הכל

import os
import sys
import subprocess

def freeSpaceInPath(path):
 try:
     f = os.statvfs(path)
     return f.f_bsize * f.f_bavail
 except Exception:
     print("error using statvfs() for free space detection")
 try:
     df_process = subprocess.Popen(["df", path], stdout=subprocess.PIPE)
     df_output = df_process.communicate()[0].decode('utf-8')
     df_output = re.sub("\s\s+", " ", df_output)
     megabytes_available_str = df_output.split("\n")[1].split(" ")[3]
     return int(megabytes_available_str)
 except Exception:
     print("calling df also failed")
     return None
זה כבר אמור לעבוד...

נשלח: 26/09/2015 19:22
על ידי עדיטו
נראה שיש שגיאה בקוד
df_output = re.sub("\s\s+", " ", df_output)
מאיפה הגיע הre??

תודה

נשלח: 26/09/2015 19:51
על ידי avigdork
תוסיף בהתחלה:
import re

נשלח: 27/09/2015 8:14
על ידי עדיטו
תודה רבה!!!!
נראה שעובד!