- Apple iPhone 15 Pro Max - Attack on Titan
- Samsung Galaxy S21 Ultra - vákuumcsomagolás
- Milyen okostelefont vegyek?
- iPhone topik
- Android szakmai topik
- Motorola Edge 40 - jó bőr
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Redmi Note 10 Pro - majdnem minden stimmel
- Megérkezett a Google Pixel 7 és 7 Pro
- Hetedik generációs Gorilla Glass készült a középkategóriának
Hirdetés
-
Frissítve! Summer Game Fest 2024 - Az összes bejelentés egy helyen!
gp A show késő este kezdődik, de utána az összes trailert összegyűjtjük egy helyre.
-
Perelnek a vallásos kripto-piramisjáték miatt
it Két kriptocéget perel New York államügyésze, mert több mint 1 milliárd dollárral károsították meg az áldozatokat.
-
Filléres Redmi érkezett
ma Az A3x nem kapott nagy bemutatót, egyszer csak felbukkant.
Új hozzászólás Aktív témák
-
Hege1234
addikt
sziasztok!
szeretném megoldani, hogy ha nem lett bejelölve a python win installálásnál az add to path
akkor futtatva a script-et, hozzáadja a PATH-hoz, és akkor nem kell újrainstallálni vagy manuálisan szórakozni vele..mivel minden ilyen módosításhoz admin jog kell, lehetséges lenne ezt python alól megoldani?
ilyesmivel próbálkozok, de mivel nem ad ki írási hibát így gondolom még csak meg se próbálja hozzáadni
import os
spec_python_ver = input('add python dir: (eg.: Python39) write here: ')
scripts_dir = os.path.join(os.environ['LOCALAPPDATA'], f'Programs\\Python\\{spec_python_ver}\\Scripts\\')
python_dir = os.path.join(os.environ['LOCALAPPDATA'], f'Programs\\Python\\{spec_python_ver}\\')
dirs_to_add = [scripts_dir, python_dir]
for directory in dirs_to_add:
if directory not in os.environ['PATH']:
os.environ['PATH'] += os.pathsep + directory
print(f"'{directory}' added to PATH")
else:
print(f"'{directory}' already in PATH")
print("\nUpdated PATH:")
print(os.environ['PATH'])[ Szerkesztve ]
-
válasz Hege1234 #4251 üzenetére
Kornyezeti valtozokat dictionary-kent kell kezelni Python alatt, tehat az ertek, amit be akarsz allitani, string kell, hogy legyen.
Viszont amihez admin jog kell - eleg rohejes lenne, ha egy ilyen egyszeru scripttel meg tudnad kerulni - azt vagy adminkent inditod, vagy UAC promptot kapsz.
https://www.coreinfinity.tech
-
sztanozs
veterán
válasz Hege1234 #4251 üzenetére
User Path valtozohoz nem kell admin jog. Miert nem adod hozza kezzel (vagy CMD fajllal)?
Ha nincs python a path-on, akkor hogy futtatod ezt a python fajlt?[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Hege1234
addikt
válasz sztanozs #4253 üzenetére
Ha nincs python a path-on, akkor hogy futtatod ezt a python fajlt?
hát erre valóban nem gondoltam, így hogy nálam az már hozzá van adva a path-hoz
és akkor egy cmd-vel vagy inkább egy .bat fájlt használva megoldható lenne?
@echo off
set /p spec_python_ver=add python dir: (eg.: Python39) write here:
set "scripts_dir=%LOCALAPPDATA%\Programs\Python\%spec_python_ver%\Scripts\"
set "python_dir=%LOCALAPPDATA%\Programs\Python\%spec_python_ver%\"
echo scripts_dir: %scripts_dir%
echo python_dir: %python_dir%így az útvonalat megkapom, de batch-el mivel tudom hozzáadni közvetlenül a PATH-hoz?
-
sztanozs
veterán
válasz Hege1234 #4254 üzenetére
setx + kozvetlen registry mokolas:
@echo off
WHERE /q python.exe
IF ERRORLEVEL 1 (
set /p spec_python_ver=add python dir: (eg.: Python39) write here:
set "scripts_dir=%LOCALAPPDATA%\Programs\Python\%spec_python_ver%\Scripts\"
set "python_dir=%LOCALAPPDATA%\Programs\Python\%spec_python_ver%\"
for /f "usebackq tokens=2,*" %A in (`reg query HKCU\Environment /v PATH`) do set
userPATH=%B
setx PATH "%userPATH%;%scripts_dir%;%python_dir%"
)[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
sztanozs
veterán
-
-
sztanozs
veterán
válasz Hege1234 #4259 üzenetére
Ez az elsot felveszi es belerakja a path-ba:
@ECHO off
setlocal EnableDelayedExpansion
WHERE /q python.exe
IF ERRORLEVEL 1 (
WHERE /q /R %LOCALAPPDATA% python.exe
IF ERRORLEVEL 1 (
ECHO Nincs installalt python a APPDATA LOCAL-ban!
EXIT /b -1
) ELSE (
ECHO Van installalt python a APPDATA LOCAL-ban!
)
CALL :sub
set "scripts_dir=!py_path!Scripts\"
set "python_dir=!py_path!"
for /f "usebackq tokens=2,*" %%A in (`reg query HKCU\Environment /v PATH`) do set userPATH=%%B
ECHO "!userPATH!;!scripts_dir!;!python_dir!"
setx PATH "%userPATH%;%scripts_dir%;%python_dir%"
)
GOTO :eof
:sub
FOR /f "tokens=*" %%A IN ('WHERE /R %LOCALAPPDATA% python.exe') do (
REM ECHO %%A
SET "py_path=%%~dpA"
EXIT /b
)
GOTO :eof[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
-
Hege1234
addikt
-
Hege1234
addikt
válasz sztanozs #4263 üzenetére
nem én írtam egy sorba, és fura is volt így ömlesztve látni
viszont nem gondoltam, hogy problémát okozhatna mert
kb. minden powershell-es line-ba amit találtam a PATH-hoz az elválasztás az ez volt hozzá;
$env:Path -split ';'
( ha új sorba van írva akkor nem si kerül a végére a
;
) -
J0shu4M1ll3r
senior tag
Sziasztok!
Az alábbi csodálatos háziban kérnék segítséget:
Próbáltam felírni a sorokat, átlókat egyenletként, de bele is zavarodtam, és chatgpt se nagyon segít, vagy nálam vacakol a VS, mert semmi megoldást nem ad vissza.
Mi a jó megközelítése?
Jelenleg itt tartok:
Elneveztem a pontokat betűkkel és beírtam a fix számokat:
1. 1+C+F+H=26
2. 1+D+G+K=26
3. 2+C+D+E=26
4. H+I+7+K=26
5. 2+F+I+L=26
6. E+4+7+L=26
Ezekből kijött pár betűnek a meghatározása, mintha egy nagy egyenletrendszer lenne, de itt elakadtam.
Köszi!"There are things you can't fight. Acts of God. You see a hurricane coming, you get out of the way. But when you're in a Jaeger, suddenly, you can fight the hurricane. You can win."
-
axioma
veterán
válasz J0shu4M1ll3r #4265 üzenetére
Szerintem itt brute force [vagy max elagazas-korlatozassal megoldasra ha mar advanced] gondoltak. A 8! nem olyan nagy szam... plane hogy a pythonhoz lib van ami legeneralja a permutaciokat ;-) de gondolom az inkabb a feladat lenyege lenne.
[ Szerkesztve ]
-
kovisoft
őstag
válasz J0shu4M1ll3r #4265 üzenetére
Ha valamilyen backtrack-szerű algoritmust akarsz használni, akkor a számokat ne egyedi változókban tárold, hanem pl. tömbben, és akkor egységesen tudod tölteni őket. A feltételeidet ugyanúgy fel tudod írni pl. 2+X[0]+X[1]+X[2]+X[3]==26 formában,
De talán az axioma által is említett permutáció generálás a legegyszerűbb: az itertools modul permutations([3,5,6,8,9,10,11,12]) függvényével le tudod generálni a maradék nyolc szám összes permutációját, ezek közül kell azokat kiválogatni, ahol minden vonalra teljesül, hogy a számok összege 26.
-
J0shu4M1ll3r
senior tag
Próbálom értelmezni, de nem megy
Látnom kéne a teljes kódot, hogy ki tudjam sakkozni, hogy mi miért történik, de azt sem tudom, hogyan fogjak hozzá."There are things you can't fight. Acts of God. You see a hurricane coming, you get out of the way. But when you're in a Jaeger, suddenly, you can fight the hurricane. You can win."
-
sztanozs
veterán
válasz J0shu4M1ll3r #4265 üzenetére
1. szamozd be a cellakat 0-11-ig:
2. csinalj egy teljes permutaciot:
3. meccseld a permutaciot a szabalyra:
doboz[0] == 1
doboz[3] == 4
doboz[5] == 7
doboz[10] == 2
es az z osszegre vonatkozo logika:
doboz[0] + doboz[1] + doboz[11] == 26
doboz[1] + doboz[2] + doboz[3] == 26
doboz[3] + doboz[4] + doboz[5] == 26
doboz[5] + doboz[6] + doboz[7] == 26
doboz[7] + doboz[8] + doboz[9] == 26
doboz[9] + doboz[11] + doboz[11] == 26JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
kovisoft
őstag
válasz J0shu4M1ll3r #4268 üzenetére
Permutációval roppant egyszerű a dolog. Egy ciklusban végigmész a permutations([...]) által visszaadott listán, aminek mindegy eleme egy mondjuk x tömb lesz az aktuális permutációval. Az x tömb a nyolc ismeretlen számot jelöli (x[0]-tól x[7]-ig). Ezekre beteszel 6 darab if-et (olyasmit, mint amit te is felírtál, csak nem egyedi változókkal, hanem a tömb elemeivel), amiben ellenőrzöd az egyes vonalak mentén az összegeket. Ha bármelyik nem 26, akkor continue. A legvégén pedig kiiratod az x-et.
Házi feladatokat nem igazán oldunk meg más helyett, de ha van bármi kód kezdeményed, és elakadsz, akkor szívesen segítünk.
Szerk: Csak egy megjegyzés, hogy ne zavarjunk még jobban össze: én a fix számokat nem vettem bele a permutációba, mint sztanozs. Én csak a 8 ismeretlent permutálnám.
[ Szerkesztve ]
-
sztanozs
veterán
válasz sztanozs #4269 üzenetére
ja, haromszogeket szamoltam, nem oldalakat, azert nem adott ki eredmenyt
from itertools import permutations
def szabaly(doboz):
a, d, f, k = 1, 4, 7, 2
b, c, e, g, h, i, j, l = doboz
return 26 == a + b + d + e == c + d + f + g == e +f + h + i == g + h + j + k == i + j + l + a
def print_doboz(doboz):
a, d, f, k = 1, 4, 7, 2
b, c, e, g, h, i, j, l = doboz
print(f" {a:>2}\n"
f"{k:>2} {l:>2} {b:>2} {c:>2}\n"
f" {j:>2} {d:>2}\n"
f"{i:>2} {h:>2} {f:>2} {e:>2}\n"
f" {g:>2}\n")
dobozok = permutations([3, 5, 6, 8, 9, 10, 11, 12])
eredmeny = filter(szabaly, dobozok)
for doboz in eredmeny:
print_doboz(doboz)
print()[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
J0shu4M1ll3r
senior tag
válasz sztanozs #4269 üzenetére
Köszi, valami ilyesmire gondoltam én is, de lehet a == is elmaradt, megnézem.
@ kovisoft:
igen, mert gondolom több megoldás is, lehet, pedig sudokuzni szeretek, de ezen csak pislogtam
Nem is kérném, hogy más csinálja meg, pont, hogy meg akarom érteni, hogy mi miért van, de lehet nem fog olyan gyorsan menni, mint gondoltam.
A fix számok kellenek, mert azok adottak, és ezek ismeretében kell kiszámolni a maradék helyekre a lehetséges számokat, így legalább nem lesz 800 megoldás"There are things you can't fight. Acts of God. You see a hurricane coming, you get out of the way. But when you're in a Jaeger, suddenly, you can fight the hurricane. You can win."
-
jerry311
nagyúr
Hi,
Lehete ezt szebben, jobban parositani?
Kiindulo szoveg:
AMRunningMode : Normal
AntispywareSignatureLastUpdated : 29/04/2024 05:36:35
AntispywareSignatureVersion : 1.409.590.0
AntivirusSignatureLastUpdated : 29/04/2024 05:36:33
AntivirusSignatureVersion : 1.409.590.0
NISSignatureLastUpdated : 29/04/2024 05:36:33
NISSignatureVersion : 1.409.590.0
Kivant eredmeny:
7 dictionary elem:
{'AMRunningMode
': 'Normal'
}
{'AntispywareSignatureLastUpdated
': '29/04/2024 05:36:35'
}
{'AntispywareSignatureVersion
': '1.409.590.0'
}
{'AntivirusSignatureLastUpdated
': '29/04/2024 05:36:33'
}
{'AntivirusSignatureVersion
': '1.409.590.0'
}
{'NISSignatureLastUpdated
': '29/04/2024 05:36:33'
}
{'NISSignatureVersion
': '1.409.590.0'
}def parseupdates(dictentry):
# initialize variables
res = {}
cleanlines = []
lines = dictentry.splitlines()
for line in range(len(lines)):
if lines[line].strip(): # remove blank lines
cleanlines.append(lines[line])
for line in range(len(cleanlines)): # split lines at the middle colon
d = " : "
temp = cleanlines[line].split(d)
for idx, element in enumerate(temp): # assign values
res[idx] = element.strip()
for i in range(0, len(res) - 1, 2): # reassemble key value pairs
j = i + 1
workarray[res[i]] = res[j]
-
axioma
veterán
válasz jerry311 #4273 üzenetére
Nem egeszen egyertelmu, hogy ekvivalens kodra vagy-e kivancsi, de mondjuk.
A te logikaddal csak "more pythonic way":def parseupdates(dictentry):
cleanlines = [line for line in dictentry.splitlines() if line.strip()]
d = " : "
workarray = {}
for line in cleanlines:
arr = line.split(d)
workarray[arr[0].strip()] = arr[1].strip()Sot, ha biztos hogy mindig pontosan egy : van benne:
def parseupdates(dictentry):
d = " : "
workarray = {}
for line in dictentry.splitlines():
if line.strip():
a,b = line.split(d)
workarray[a.strip()] = b.strip()Azert a
line
nevet nem jo indexnek hasznalni, foleg hogy a for ciklus pont ki tudja venni a konkret elemet is, nem kell az indexeket kovetni. Ami me'g nagyon idegen, hogy ares
dictionary-nak van inicializalva, kozben tombkent hasznaltad.Hm varj most nezem nem csak egy : -od van a peldaban. Es azokat te se rakod utana ossze... tehat az sztem eleve hozott volna "36":"35" , "36":"33" parokat, es mazlid hogy mind paratlan darab :, amugy me'g jobban keresztbe sikerult volna (nem futtattam, csak gyanitom)
Szoval az eredeti feladatra talan inkabb:
def parseupdates(dictentry):
d = " : "
workarray = {}
for line in dictentry.splitlines():
idx = line.find(d)
if idx != -1:
workarray[line[:idx].strip()] = line[idx+1:].strip()[ Szerkesztve ]
-
jerry311
nagyúr
Hatékonyabb, rövidebb kód volt a cél, mert én Pythonban jelenleg kb. olyan messze vagyok a hatékony programozástól, mint hentes a sebésztől. Ha le kell vágni valamit, akkor az megy, csak nem lesz szép.
Köszönöm!
Ilyesmire gondoltam, mert ugyan a kódom megoldotta a feladatot, de nem tűnt helyesnek, ahogy elértem a megoldást. Lásd pl.res
dictionary/tömb.A : résszel nem volt gond (szerintem), mert a delimiterben előtte és utána is van space. Ilyen csak középen fordul elő.
-
axioma
veterán
válasz jerry311 #4275 üzenetére
Ah, jogos, a szokozok segitettek. De amugy az nem kizarhato, hogy az ertekben olyan is legyen, igy arra szerintem kevesbe jo altalanosan epiteni. Az elso : az mondjuk hihetobb hogy bejon (bal oldal jellemzoen valami azonosito, abban nem lehet).
Nem mondanam hatekonyabbnak ha idoigenyre gondolsz, nincs erdemi kulonbseg, csak olvashatobb-karbantarthatobb. -
sztanozs
veterán
válasz jerry311 #4273 üzenetére
miert kell 7 dict es nem egy dict 7 elemmel?
szoveg='''AMRunningMode : Normal
AntispywareSignatureLastUpdated : 29/04/2024 05:36:35
AntispywareSignatureVersion : 1.409.590.0
AntivirusSignatureLastUpdated : 29/04/2024 05:36:33
AntivirusSignatureVersion : 1.409.590.0
NISSignatureLastUpdated : 29/04/2024 05:36:33
NISSignatureVersion : 1.409.590.0'''
cleanlines = [{k.strip():v.strip() for k,v in [line.split(':', maxsplit=1)]} for line in szoveg.splitlines() if line.strip()][ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
jerry311
nagyúr
Szvsz, nem nagy a kockazat. Egesz addig jol mukodik, amig az MS nem valtoztat az ido formatumon.
sztanozs
Koszonom neked is.7 dictionary elem:
Ez szamomra 1 dict 7 elemmel. Megvolt mar az elso kave ma?Egyebkent azert dictionary, mert azt eszi a docx-mailmerge.
[ Szerkesztve ]
-
sztanozs
veterán
válasz jerry311 #4278 üzenetére
Nem, ez egy list, 7 dict entryvel:
[{k.strip():v.strip() for k,v in [line.split(':', maxsplit=1)]} for line in szoveg.splitlines() if line.strip()]
[
{'AMRunningMode': 'Normal'},
{'AntispywareSignatureLastUpdated': '29/04/2024 05:36:35'},
{'AntispywareSignatureVersion': '1.409.590.0'},
{'AntivirusSignatureLastUpdated': '29/04/2024 05:36:33'},
{'AntivirusSignatureVersion': '1.409.590.0'},
{'NISSignatureLastUpdated': '29/04/2024 05:36:33'},
{'NISSignatureVersion': '1.409.590.0'}
]
a dict igy nez ki:{k.strip():v.strip() for k,v in [line.split(':', maxsplit=1) for line in szoveg.splitlines() if line.strip()]}
{
'AMRunningMode': 'Normal',
'AntispywareSignatureLastUpdated': '29/04/2024 05:36:35',
'AntispywareSignatureVersion': '1.409.590.0',
'AntivirusSignatureLastUpdated': '29/04/2024 05:36:33',
'AntivirusSignatureVersion': '1.409.590.0',
'NISSignatureLastUpdated': '29/04/2024 05:36:33',
'NISSignatureVersion': '1.409.590.0'
}[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
sztikac
őstag
Sziasztok, a Learn Python 3 The Hard Way könyvből tanulom a Python-t és van ez a feladat:
from sys import argv
from os.path import exists
script, from_file, to_file = argv
print(f"Copying from {from_file} to {to_file}")
# we could do these two on one line, how?
in_file = open(from_file)
indata = in_file.read()
print(f"The input file is {len(indata)} bytes long")
print(f"Does the output file exist? {exists(to_file)}")
print("Ready, hit RETURN to continue, CTRL-C to abort.")
input()
out_file = open(to_file, 'w')
out_file.write(indata)
print("Alright, all done.")out_file.close()
in_file.close()Ezt teljesen világos is, hogy mit-miért csinál.
Aztán van ugye a feladatok között egy ilyen:See how short you can make the script. I could make this one line long.
Ezzel eddig jutottam (még elég messze vagyok az 1 sortól ):
from sys import argv
script, from_file, to_file = argv
in_data = open(from_file).read()
open(to_file, 'w').write(in_data)
Ez így lefut, rendben le is másolja a megadott fájlt, csak ugye ebben az esetben nincs file descriptorom így nem tudom min meghívni a close()-t. Úgy tudom a program lefutása után az OS úgyis bezárja a nyitott fájlokat, de szabályos ez így?
-
sztanozs
veterán
-
Atomantiii
őstag
Tudna valaki segíteni (akár privát üzenetben is) egy letöltő srcipt készítésében, ahol van egy ilyen szerkezetű fájl, amiben a letöltendő oldalak vannak meghatározva melyik oldalnak mi a pontos elérése. A pdf-eket szeretném, hogy letöltse, már ha lehet olyat.
{
"editionGUID": "602de21a-dd42-4413-bd98-dc89232280fe",
"pagesDomain": "https://valami.com",
"pageGroups": [
{
"pages": [
{
"pdf": "https://valami.com/page1.pdf",
"pageNum": 1,
"type": "page"
}
]
},
{
"pages": [
{
"pdf": "https://valami.com//page2.pdf",
"pageNum": 2,
"type": "page"
}
]
},
{
"pages": [
{
"pdf": "https://valami.com/page3.pdf",
"pageNum": 3,
"type": "page"
stb...
} ] } ] }
-
Atomantiii
őstag
válasz Atomantiii #4286 üzenetére
Bár lehet egyszerűbb kimásolnom a linkeket és megetetni egy letöltő progival.
-
Atomantiii
őstag
válasz Atomantiii #4287 üzenetére
Mégsem teljesen jó ötlet a letöltésvezérlő, mert minden fájlnak ugyanaz a neve csak a más link. Vagyis letöltés közben át is kellene nevezni mondjuk sorszám alapján.
-
Atomantiii
őstag
válasz Atomantiii #4288 üzenetére
Közben megvan a megoldás.
-
Csunyan elakadtam egy ostoba hibaval es nem jovok ra a megoldasra: a program paramiko-n keresztul kapcsolodik egy masik rendszerhez es sftp-vel beolvas onnan egy file-t. Olvasas elott ellenoriznem, hogy a file tenyleg ott van-e, de valamiert a "FileNotFoundError: [Errno 2] No such file" hibat nem tudom elkapni. Probaltam ezt, probaltam az IOError-t, probaltam altalanossagban minden exceptiont elkapni, de ez konokul visszajon, ez az utolso harom sor:
File "/home/sh4d0w/projects/pyloader/venv/lib/python3.11/site-packages/paramiko/sftp_client.py", line 938, in _convert_status
raise IOError(errno.ENOENT, text)
FileNotFoundError: [Errno 2] No such file
Van vkinek otlete?
https://www.coreinfinity.tech
-
-
-
Közben kipróbáltam valahogy így:
try:
sftp_client.get("/nincsilyen","/dev/null")
except Exception as err:
print("Error: ", err)
Így működik, szóval nem valószínű, hogy trükközne threadekkel vagy processzekkel. Esetleg az except nem lehet, hogy más kategóriát vár, mint amit kap?
Illetve még olyan tippem van, hogy egy feldolgozás alatt álló exceptionön belül jön elő ez a hiba esetleg. -
jerry311
nagyúr
válasz galaxy55 #4293 üzenetére
Nem ugy nez ki mint ha nagyon elvarazsolt lenne az exception a Paramiko sftp_client.py-ban:
def _convert_status(self, msg):
"""
Raises EOFError or IOError on error status; otherwise does nothing.
"""
code = msg.get_int()
text = msg.get_text()
if code == SFTP_OK:
return
elif code == SFTP_EOF:
raise EOFError(text)
elif code == SFTP_NO_SUCH_FILE:
# clever idea from john a. meinel: map the error codes to errno
raise IOError(errno.ENOENT, text)
elif code == SFTP_PERMISSION_DENIED:
raise IOError(errno.EACCES, text)
else:
raise IOError(text)
-
válasz jerry311 #4294 üzenetére
Arra gondoltam, hogy esetleg sh4d0w programjában van az except paraméterezése el... khm.
De ha except IOError-t használt, akkor annak is működnie kellene.
És akkor még lehetséges az eltérő platform miatti különbség, az eltérő verzió, nálam csak 3.10 van és láttam már olyat, ami verziótól függően működött vagy nem működött. Summa summarum: látni kéne a forrás kódját a problémás programnak. -
válasz galaxy55 #4293 üzenetére
Itt a kod:
try:
ssh.connect('192.168.56.145', username = username, password = password)
except paramiko.ssh_exception.AuthenticationException:
print('\t[ LOADER ]: Wrong credentials, exiting...\n')
ssh.close()
sys.exit(5)
except FileNotFoundError as err:
print('\t[ LOADER ]: Wrong path, exiting...\n')
ssh.close()
sys.exit(6)
Itt pedig a traceback:
Traceback (most recent call last):
File "/home/sh4d0w/projects/pyloader/./loader.py", line 124, in <module>
main()
File "/home/sh4d0w/projects/pyloader/./loader.py", line 120, in main
readDBConfig()
File "/home/sh4d0w/projects/pyloader/./loader.py", line 104, in readDBConfig
dbConfigFile = sftp.open('/etc/mongod.conf')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/sh4d0w/projects/pyloader/venv/lib/python3.11/site-packages/paramiko/sftp_client.py", line 372, in open
t, msg = self._request(CMD_OPEN, filename, imode, attrblock)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/sh4d0w/projects/pyloader/venv/lib/python3.11/site-packages/paramiko/sftp_client.py", line 857, in _request
return self._read_response(num)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/sh4d0w/projects/pyloader/venv/lib/python3.11/site-packages/paramiko/sftp_client.py", line 909, in _read_response
self._convert_status(msg)
File "/home/sh4d0w/projects/pyloader/venv/lib/python3.11/site-packages/paramiko/sftp_client.py", line 938, in _convert_status
raise IOError(errno.ENOENT, text)
FileNotFoundError: [Errno 2] No such file
Ha a FileNotFoundError helyett OSError-t vagy IOError-t irok, pont ugyanez a vegeredmeny.[ Szerkesztve ]
https://www.coreinfinity.tech
-
Ne vedd kötekedésnek, de pont a lényeg hiányzik, ahol hibára fut
A .connect az csak az ssh kapcsolatot nyitja meg, az sftp.open valahol máshol van vagy kimaradt a bemásolt részletből.Totál off, de ha van rá lehetőséged, a mongodb helyett inkább használj PostgreSQL-t, az is tudja a nosql funkcionalitást egy ideje és nagyságrendekkel gyorsabbnak tűnt, amikor ilyesmivel foglalkoztam.
-
-
-
-
Még egy utolsó e témában, aztán elengedem: pár tízezer, talán százezer soros táblám volt, amiben regex kereséseket kellett csinálnom. Szintén hobbiprojekt. MongoDB egy keresés egy-két másodpercig futott. A Postgres azonnal válaszolt, szinte nulla késéssel, nem foglalkoztam méréssel, villámgyorsan váltottam. Aztán persze a projekt elhalt, kukáztam az egészet, így nem tudom, mi lett volna ha élesítem.
-
animatrix11
őstag
Sziasztok
Segítséget kérnék, egy python scripthez utf-8 kódolás kéne, mert nem érti a különleges karaktereket, a google nem tudott segíteni benne, a kódba kéne valahogy beleírni, hogy utf-8-at használjon vagy be lehet valahogy állítani a python vagy vs code-on belül?
ezt szeretném használni: [link]
Előre is köszi!Hardvert vásárolok nagy tételben is!!! Elérhetőség: 18. kerületben.
-
válasz animatrix11 #4303 üzenetére
A string műveletek python3 óta alapértelmezetten utf8-at használnak.
Ha a forráskóddal van problémád, akkor esetleg egy# -*- coding: utf-8 -*-
sor segíthet, de a kérdésed alapján úgy gondolom, valami más lehet a gondod. Esetleg nem utf8 ékezeteid vannak? -
animatrix11
őstag
válasz galaxy55 #4304 üzenetére
ez egy telegram üzenet továbbító program ezt a hibát dobja:
Chat ID: -1001697412340, Title: Ben, Gold Trader
Chat ID: -1001765226347, Title: Ben, Gold Trader
Chat ID: -1001542422851, Title: GOLD Trader Mo🫅
Traceback (most recent call last):
File "C:\Users\user\Desktop\Telegram-Autoforwarder-master\TelegramForwarder.py", line 124, in <module>
asyncio.run(main())
File "C:\Program Files\Python312\Lib\asyncio\runners.py", line 194, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "C:\Program Files\Python312\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python312\Lib\asyncio\base_events.py", line 687, in run_until_complete return future.result()
^^^^^^^^^^^^^^^
File "C:\Users\user\Desktop\Telegram-Autoforwarder-master\TelegramForwarder.py", line 111, in main
await forwarder.list_chats()
File "C:\Users\user\Desktop\Telegram-Autoforwarder-master\TelegramForwarder.py", line 26, in
list_chats
chats_file.write(f"Chat ID: {dialog.id}, Title: {dialog.title} \n")
File "C:\Program Files\Python312\Lib\encodings\cp1250.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: 'charmap' codec can't encode character '\U0001fac5' in position 46: character maps to <undefined>ezt hova kéne beillíszteni? # -*- coding: utf-8 -*-
Hardvert vásárolok nagy tételben is!!! Elérhetőség: 18. kerületben.
-
válasz animatrix11 #4305 üzenetére
Azt a codec sort a program első sorai közé volt szokás betenni, de az ahhoz kellett, hogy magát a forrást unicode-ként kezelje az interpreter, az adatok kódolásához nincs köze.
Itt úgy tűnik, cp1250 (windowsos kódolású) fájlként kezel valamit, ami a valóságban unicode.
Nincs sok ötletem a korrekt javításra. -
sztanozs
veterán
válasz animatrix11 #4307 üzenetére
22. sor:
chats_file = open(f"chats_of_{self.phone_number}.txt", "w")
helyettchats_file = open(f"chats_of_{self.phone_number}.txt", "w", encoding="utf-8")
ha a jelszoban is lehet ekezetes karakter, akkor a 73. es 85. sorban is javitando (a fentihez hasonloan)
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
animatrix11
őstag
válasz sztanozs #4308 üzenetére
Köszi
Közben kézzel beírtam az id-ket, neveket, de maga a program sem működik, dob egy csomó hibát, amikor tobábbítani akarom az üzeneteket, szerintem nézek egy másikat, de ezért kipróbálom amit küldtél, hátha az a baja csakHardvert vásárolok nagy tételben is!!! Elérhetőség: 18. kerületben.
Új hozzászólás Aktív témák
- Beszámítás! ASUS Prime B450M-A R5 5600 16GB DDR4 500GB SSD RTX 3070Ti 8GB CM MasterBox MB530P 650W
- Macbook pro 13 i7, 4gb ram, 512gbHdd
- Beszámítás! GIGABYTE B760 Aorus i7 13700F 32GB DDR4 1TB SSD RTX 3080 10GB CM MasterCase Maker 5 750W
- LG (38GL950G-B) 38" 175HZ GAMER QUAD HD LED MONITOR !
- LG (34WP88C-B.) 34 "QHD GAMER MONITOR ! AKCIÓ!
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs