Re: Letzter Versuch: Python statt PHP?
Verfasst: Montag 28. Januar 2019, 22:55
Ist Skynet dann noch in PHP oder schon in Python geschrieben?
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Es war mir immer ein Rätsel warum ich Haskell lernen musste. Jetzt habe ich Angst...__blackjack__ hat geschrieben: Dienstag 29. Januar 2019, 09:50 Das haben die geschickt arrangiert. Und er fällt prompt darauf herein…
Code: Alles auswählen
#!/usr/bin/env python3
import os
from datetime import datetime as DateTime
from functools import partial
from attr import attrib, attrs
import click
from psutil import disk_usage
@attrs(frozen=True)
class File:
name = attrib()
size = attrib()
modified_at = attrib()
def __str__(self):
return (
f'{self.modified_at:%Y-%m-%d %H:%M:%S}'
f' {self.size:-12d}'
f' {self.name}'
)
@classmethod
def from_path_and_name(cls, path, filename):
file_stats = os.lstat(os.path.join(path, filename))
return cls(
filename,
file_stats.st_size,
DateTime.fromtimestamp(file_stats.st_mtime),
)
@attrs
class Folder:
path = attrib()
files = attrib()
def __len__(self):
return len(self.files)
def __iter__(self):
return iter(self.files)
def __str__(self):
files_text_block = '\n'.join(map(str, self))
return (
f'Directory of {self.path}\n\n'
f'{files_text_block}\n\n'
f'{len(self):-8d} file(s) {self.size:-20d} bytes'
)
@property
def size(self):
return sum(file.size for file in self)
@classmethod
def from_path_and_names(cls, path, filenames):
make_file = partial(File.from_path_and_name, path)
return cls(
os.path.abspath(path),
sorted(
map(make_file, filenames),
key=lambda file: (-file.size, file.name),
)
)
def iter_directories(base_path):
file_count = 0
total_size = 0
for path, _, filenames in os.walk(base_path):
files = Folder.from_path_and_names(path, filenames)
if files:
file_count += len(files)
total_size += files.size
yield f'{files}\n\n'
bytes_free = disk_usage(base_path).free
yield (
f' Total files listed:\n'
f'{file_count:-8d} files {total_size:-16d} bytes\n'
f' 0 directories {bytes_free:-16d} bytes free\n'
)
@click.command()
@click.argument('path', default=os.curdir)
def main(path):
"""Windows/DOS ``dir /S /A:-S /A:-D /T:W /O:-S {path}`` in Python.
If no path is given, the current directory is assumed.
"""
click.get_text_stream('stdout').writelines(iter_directories(path))
if __name__ == '__main__':
main()
Code: Alles auswählen
Directory of /home/bj/tmp/pco_sdk
2018-01-26 09:00:50 24406304 SW_PCOSDKWIN_123_0001.exe
2017-01-12 12:56:02 1685504 Create_pco_vs_props.exe
2018-01-26 09:00:38 159992 uninstall.exe
2018-01-26 08:59:50 19467 read_me.txt
2011-10-20 09:14:16 2680 License.txt
2017-01-12 16:21:16 192 create_props.bat
6 file(s) 26274139 bytes
Directory of /home/bj/tmp/pco_sdk/$_26_
2016-07-26 08:31:36 508928 sc2_cl_mtx.dll
2017-08-04 13:16:08 312832 sc2_cl_me4.dll
2017-02-02 17:32:46 275968 sc2_clhs.dll
2016-07-26 08:31:36 246784 sc2_cl_nat.dll
2016-07-13 10:05:48 135168 find_nat.exe
5 file(s) 1479680 bytes
Directory of /home/bj/tmp/pco_sdk/include
2017-12-15 07:42:06 130739 SC2_CamExport.h
2017-12-04 14:26:36 63575 sc2_defs.h
2017-11-15 15:53:06 52769 sc2_SDKStructures.h
2017-08-30 15:31:22 39926 PCO_err.h
2017-08-30 15:31:22 38447 PCO_errt.h
2014-02-17 14:19:22 18938 Pco_edge_gs_calc_Export.h
2017-09-27 10:37:42 13337 SC2_SDKAddendum.h
2014-08-29 09:59:18 10522 SC2_DialogExport.h
2015-05-20 11:09:26 9832 Pco_ConvStructures.h
2015-03-10 09:15:18 8938 Pco_ConvExport.h
2017-08-03 17:06:32 5915 sc2_common.h
2015-04-17 09:00:14 4633 Pco_ConvDlgExport.h
2015-06-12 14:39:24 2542 PCO_Structures.h
13 file(s) 400113 bytes
[…]
Directory of /home/bj/tmp/pco_sdk/sample/SC2_Demo
2014-12-12 12:13:28 30070 SC2_Class.cpp
2017-01-12 15:00:10 15424 SC2_Demo.vcxproj
2010-08-19 10:04:08 9308 SC2_Demo.rc
2010-09-01 16:26:18 7024 MainFrm.cpp
2006-03-22 15:38:52 3893 ReadMe.txt
2010-05-20 16:56:42 3328 SC2_Demo.cpp
2008-06-09 08:59:24 2428 ChildView.cpp
2010-09-01 16:26:18 2374 MainFrm.h
2014-03-24 11:48:04 2337 SC2_Class.h
2010-08-31 17:03:10 1432 targetver.h
2006-03-28 16:54:08 1418 ChildView.h
2006-03-28 16:54:08 1404 SC2_Demo.h
2017-01-10 10:35:56 1315 SC2_Demo.sln
2010-08-19 10:03:30 1053 resource.h
2010-08-31 16:18:06 1031 StdAfx.h
2006-03-28 16:54:08 212 StdAfx.cpp
16 file(s) 84051 bytes
Directory of /home/bj/tmp/pco_sdk/sample/SC2_Demo/res
2008-09-30 16:26:44 10990 SC2_Demo.ico
2010-12-13 11:20:28 738 SC2_Demo.manifest
2006-03-28 14:56:00 478 Toolbar.bmp
2006-03-22 15:38:52 400 SC2_Demo.rc2
4 file(s) 12606 bytes
Total files listed:
200 files 75026513 bytes
0 directories 15082020864 bytes free
Code: Alles auswählen
#!e:/Apache24/python/python.exe
print ("Content-type: text/html")
print ("")
print ("<html><head>")
print ("")
print ("</head><body>")
print ("")
import os
from os.path import join, getsize
#os.startfile("C:\F\OverDisk\OverDisk.exe") #ok
#sys.exit() #ok
def dosomething( thelist ):
for element in thelist:
print ( element )
dosomething( ['1','2','3'] )
alist = ['red','green','blue']
dosomething( alist )
def a1(arr):
print(arr[0])
a = [["<br>",1, 2, 3, "ui<br>"], [4, 5, 6]]
a1(a)
def sum_it_up(num_1, num_2, num_3, *nums): #*-Operator
# list_sum = functools.reduce(lambda x,y: x+y, nums)
return num_1 + num_2 + len(nums)
my_list = [1,3,5,7]
print (sum_it_up(*my_list))
b=[["Ordner1","file1"],["Ordner2","file2"]]
print(b[0][0])
i=1
print(b[0][i])
def zeig(x):
print(x[0][1]);
zeig(b)
print("<br>")
# Rechtsklick Maus und UTF-8, nie TAB
# def to_text_files(*arguments):
# for path, filename in arguments:
# subprocess.run(
# f'dir /S /A:-S /A:-D /T:W /O:-S /-C "{path}" > "{filename}"',
# shell=True,
# )
# def to_text_files(items):
# for path, filename in items:
# with open(filename, 'wb') as out_file:
# subprocess.run(
# ['dir', '/S', '/A:-S', '/A:-D', '/T:W', '/O:-S', '/-C', path],
# stdout=out_file,
# )
a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
s = 0
def to_text_files(*arguments):
for path, filename in arguments:
subprocess.run(
print("hallo"),
shell=True,
# f'dir /S /A:-S /A:-D /T:W /O:-S /-C "{path}" > "{filename}"',
)
#to_text_files(a) #wie? aber egal, brauchts nicht
for row in a:
for elem in row:
s += elem
print(s)
# keinen tab verwenden, muss UTF-8 sein, rechter Mausklick kommentieren
b = [["Ordner1","file1"],["Ordner2","file2"]]
for row in b:
print("<br>row[0]: ",row[0]," row[1]: ",row[1])
# for elem in row:
# print("<br>elem: ",elem," row: ",row[1])
print("<br>war row<br>")
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
exec(open(filename).read())
ax ="E:\Test"
os.listdir(ax)
print("<br>war listdir<br>")
for subdir, dirs, files in os.walk("."):
for file in files:
print(os.path.join(subdir, file)+"<br>")
print("<br>war erster walk<br><br>")
# https://www.coding-board.de/threads/python-dateien-aus-aktuellen-verzeichnis-unterverzeichnis-auslesen.37937/
# google: python ordner auslesen
# https://docs.python.org/3.4/library/os.html
for root, dirs, files in os.walk(ax):
for file in files:
x=os.path.join(root, file)
print("<br>",os.path.join(root)," \ ",os.path.join(file),os.path.getsize(x)," neu: ",getsize(join(root, file)))
print("<br> und weiter<br>")
# k=0
# for root, dirs, files in os.walk("E:\Test"):
# print(root, "consumes", end=" ")
# ay=sum(getsize(join(root, name)) for name in files)
# print(ay, end=" ") # print(sum(getsize(join(root, name)) for name in files), end=" ")
# print("bytes in", len(files), "non-directory files")
# if 'CVS' in dirs:
# dirs.remove('CVS') # don't visit CVS directories
# k+=ay
# print("Gesamtsumme: ",k,"<br>")
# print("Alles: ",k)
# import subprocess
def die_files(x): #muss vor dem Aufruf stehen
for row in x:
print("<br>row[0]: ",row[0]," row[1]: ",row[1])
print("<br>los gehts:")
die_files([["E:/test","E:/c/res.txt"],["E:/test1","E:/c/res1.txt"],["E:/test2","E:/c/res2.txt"]])
print("<br>das wars<br>")
s=0
for row in a:
for elem in row:
s += elem
print(s)
"""
ist
ein
Kommentar
"""
for num in range(2, 10):
if num % 2 == 0:
print("Found an even number", num)
continue
print("---Found a number", num)
print("<br>weiter:<br>")
with os.scandir(ax) as it: #ok
for entry in it:
# if not entry.name.startswith('.') and entry.is_file():
print(entry.name)
from pathlib import Path
def get_txt_files(base_dir): #ignoriert es in base_dir
return Path(base_dir).glob("*/*.png")
for name in get_txt_files("E:\\"):
print("<br>name: ",name)
print("<br><br>")
# https://python-forum.io/Thread-scandir-recursively-and-return-path-filename ->
for root,dirs,files in os.walk(ax):
for file in files:
print("<br>",join(root, file)," root: ",root," sum: ",sum(getsize(join(root, name)) for name in files), " single: ",getsize(join(root, file)))
#sum ist die Summe aller files oben im jeweiligen Ordner
print("<br>fertig")
print ("</body></html>")
Dann ist das doch DEIN Ding. Noch "freakiger" als deine Vorstellung, wie das zu laufen hat, kann's kaum werden...st aber eher was für freaks,
Wo immer du das her hast -> stimmt nicht.Angeblich wird Python vor allem fürs web benutzt,
Für eine simple Nutzung steht vor allem eins im Weg: du selber und deine Einstellung.was simple Nutzung leider sehr erschwert
Python ist cross-platform, das verhält sich unter Win genau so wie unter Linux wie unter MacOS wie unter..Es fehlt die universell einfache kompakte Zusammenfassung zumindest für Windows.
Ja, aber so lange du dir mit deiner Einstellung selber im Weg stehst, wird das nicht passieren. Henne-Ei Problem...Wäre wirklich sehr nett, den code von blackjack verwenden zu können.