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

תוכנות ניהול מדיה: KODI, תוספים, XBMC, Media Portal, PLEX וכו'
עדיטו פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 415
הצטרף: יולי 2015
שם מלא: adito

שליחה

אז ככה..
אני רוצה לכתוב סקריפט שפשוט יבדוק כמה מקום פנוי יש בדיסק,

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

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


תודה רבה

Batnun
חבר מביא חבר
חבר מביא חבר
תגובות: 3631
הצטרף: מאי 2005

שליחה

הדוגמאות כאן עובדות לי במק:

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


Batnun

.

Batnun
חבר מביא חבר
חבר מביא חבר
תגובות: 3631
הצטרף: מאי 2005

שליחה

הנה דוגמה שעובדת:

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

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

Batnun

.

עדיטו פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 415
הצטרף: יולי 2015
שם מלא: adito

שליחה

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

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

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

kingikra
סמל אישי של משתמש
חבר שלא מהעולם הזה
חבר שלא מהעולם הזה
תגובות: 8141
הצטרף: דצמבר 2006

שליחה

זה מה שמצאתי בחיפוש קצר
נא להרשם/להכנס לחשבון בפורום על מנת לצפות בקבצים או בתמונות המצורפים לשרשור

Batnun
חבר מביא חבר
חבר מביא חבר
תגובות: 3631
הצטרף: מאי 2005

שליחה

kingikra כתב:זה מה שמצאתי בחיפוש קצר
...
·

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


Batnun

.

עדיטו פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 415
הצטרף: יולי 2015
שם מלא: adito

שליחה

זה מה שניסיתי אבל לא עובד כפי שכבר כתבתי...

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



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

kingikra
סמל אישי של משתמש
חבר שלא מהעולם הזה
חבר שלא מהעולם הזה
תגובות: 8141
הצטרף: דצמבר 2006

שליחה

מצאתי בגוגל כמה וכמה דרכים. שווה לך לנסות אותם עד שאחד יצליח.

Batnun
חבר מביא חבר
חבר מביא חבר
תגובות: 3631
הצטרף: מאי 2005

שליחה

עדיטו כתב:זה מה שניסיתי אבל לא עובד כפי שכבר כתבתי...

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



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


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

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


Batnun

.

עדיטו פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 415
הצטרף: יולי 2015
שם מלא: adito

שליחה

היי
ניסיתי להשתמש בos.fstatvfs
אך אני מקבל בדיוק את אותה השגיאה...

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

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

rabak
סמל אישי של משתמש
חבר פעיל במיוחד
חבר פעיל במיוחד
תגובות: 565
הצטרף: דצמבר 2010

שליחה

@עדיטו
·הדרך האחרת היא לפתוח ב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
זה כבר אמור לעבוד...

עדיטו פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 415
הצטרף: יולי 2015
שם מלא: adito

שליחה

נראה שיש שגיאה בקוד
df_output = re.sub("\s\s+", " ", df_output)
מאיפה הגיע הre??

תודה

avigdork
סמל אישי של משתמש
חבר ותיק
חבר ותיק
תגובות: 1460
הצטרף: יולי 2012

שליחה

תוסיף בהתחלה:
import re

עדיטו פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 415
הצטרף: יולי 2015
שם מלא: adito

שליחה

תודה רבה!!!!
נראה שעובד!

חזור אל “תוכנה - KODI”